c# 在另一个按钮中使用局部变量

c# use a local variable in another button

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

当我在 FTPDisconnectbtn_Click 中键入 client.Close(); 时,出现错误:

The name 'client' does not exist in the current context.

如果我没理解错的话,那是因为客户端没有在 Disconnect 按钮上指定(我不知道确切的术语),而只在 Connect 按钮上指定。

我想要的是能够在任何其他按钮中重用来自 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# 问题("basic" 这个词并不是要侮辱人,更多的意思是它是您需要了解的基础知识)。

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

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

四处搜索 "C# variable scope" 以了解更多信息。这是一个非常重要的问题,您需要了解所有编码。

希望对您有所帮助。