【问题标题】:Sharing instances and methods/variables within a form in c#在 C# 中的表单内共享实例和方法/变量
【发布时间】:2018-08-26 13:50:00
【问题描述】:

我是 C# 的新手,刚刚开始使用表单来创建 GUI。

这里有一些代码:

    public void Server_connect_button_Click(object sender, EventArgs e)
    {
        //Open CasparCG server connection and create a TCP client
        int port = portnumber;
        TcpClient serv1 = new TcpClient("localhost", port);
    }

    public void Disconnect_server_button_Click(object sender, EventArgs e)
    {
        serv1.Close();
    }

这是来自 Form1.cs 中几个按钮实现的代码。

我遇到的问题是 Disconnect_server 按钮代码中的 serv1 实例无法识别。因此,该实例并没有脱离 Server_connect 代码。我尝试在 Program.cs 的 Main() 代码中使用相同的代码(以及变量和方法),但我无法在按钮代码中的相同代码块之外识别任何这些代码所以我显然忽略了一些东西。我已经尝试过公开所有内容等,但这一切似乎都没有什么区别。似乎没有任何东西可以在代码中的其他任何地方传达变量/方法/实例。

请意识到我是这门语言的初学者,所以我有时会卡在这个(大概)基本的东西上。

谢谢, 马丁

【问题讨论】:

    标签: c# winforms methods instance


    【解决方案1】:

    问题是变量作用域,现在变量作用域取决于方法Server_connect_button_Click,你需要在类级别创建变量作用域

    要为给定类中的所有方法提供实例,您可以这样做

    class Abc {
      private TcpClient serv1;
    
      public void Server_connect_button_Click(object sender, EventArgs e)
      {
        //Open CasparCG server connection and create a TCP client
        int port = portnumber;
        serv1 = new TcpClient("localhost", port);
      }
    
      public void Disconnect_server_button_Click(object sender, EventArgs e)
      {
        if(serv1!=null)
         serv1.Close();
      }
    }
    

    我的意思是你需要在类级别声明变量来解决你的问题,你的代码当前的问题是变量的范围只取决于给定的方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 2019-02-21
      • 1970-01-01
      相关资源
      最近更新 更多