首页 > 解决方案 > c# 在另一个按钮中使用局部变量

问题描述

我目前正在使用来自https://www.limilabs.com/ftp的 Ftp.dll 库,但在实现断开连接按钮时遇到问题。

当我输入client.Close();时,FTPDisconnectbtn_Click我收到错误:

当前上下文中不存在名称“client”。

如果我理解正确,那是因为未在“断开连接”按钮中指定客户端(我不知道确切的术语),而仅在“连接”按钮上。

我想要的是能够从FTPConnectbtn_Click任何其他按钮的功能中重用客户端。

如何正确地做到这一点?

非常感谢帮助我!!!

我当前的代码:

        private void FTPConnectbtn_Click(object sender, EventArgs e)
    {
        using (Ftp client = new Ftp())
        {
            if (FTPSSLcheck.Checked)
            {
                client.ConnectSSL(FTPhosttext.Text);
            }
            else
            {
                client.Connect(FTPhosttext.Text);
            }
            client.Login(FTPusertext.Text, FTPpasstext.Text);
            Limilabs.FTP.Log.Enabled = true;
            Limilabs.FTP.Log.WriteLine += Console.WriteLine;

            client.ChangeFolder("pub");

            List<FtpItem> items = client.GetList();

            foreach (FtpItem item in items)
            {
                FTPlistBox1.DataSource = items;
            }
        }
    }


    private void FTPDisconnectbtn_Click(object sender, EventArgs e)
    {
     client.Close();
    }

标签: c#functionbuttoncallreusability

解决方案


这与包无关,而是一个基本的 C# 问题(“基本”这个词并不是为了侮辱,更多的意思是它是你需要理解的基本内容)。

客户端变量在 FTPConnectbtn_Click 方法的 using 语句中声明。这意味着它是一个局部变量,仅在块(大括号)中可用。如果您尝试在其余方法中访问它,您会得到相同的错误。

您需要做的是为客户端声明一个类级变量,并将连接存储在其中,以便在其他方法中可用。这意味着您将失去使用语句为您关闭连接的好处,因此您必须在完成后手动关闭它。

搜索“C# 变量范围”以获取更多信息。这是一个非常重要的问题,您需要了解所有编码。

希望有帮助。


推荐阅读