【问题标题】:c# use a local variable in another buttonc# 在另一个按钮中使用局部变量
【发布时间】:2018-09-30 15:50:16
【问题描述】:

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

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

当前上下文中不存在名称“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();
    }

【问题讨论】:

  • 忘记添加了,两个按钮在同一个表单上!
  • client 设为表单中的字段或属性。

标签: c# function button call reusability


【解决方案1】:

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

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

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

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

希望对您有所帮助。

【讨论】:

  • 由于使用了 using 语句,在对 FTPConnectbtn_Click 的调用完成时客户端是否已经关闭,从而使关闭按钮没有意义?
  • 非常感谢!它确实有帮助!我找到了一个关于变量作用域的非常好的介绍,它对我很有帮助!
猜你喜欢
  • 2011-04-15
  • 2017-12-22
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多