在c#中共享表单中的实例和方法/变量

时间:2018-03-17 15:35:06

标签: c# winforms methods instance

我是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()代码中使用相同的代码(以及变量和方法),但是我无法在按钮代码的同一代码块之外识别任何这些代码。所以我显然忽略了一些东西。我已经尝试过把所有东西都公之于众,但这一切似乎没有任何区别。似乎没有什么能在代码中的任何其他地方传递变量/方法/实例。

请注意我是这种语言的初学者,所以我有时会被这个(大概)基本的东西困住。

谢谢, 马丁

1 个答案:

答案 0 :(得分:3)

问题是变量范围,现在变量范围是方法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();
  }
}

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