簡體   English   中英

在c#中共享表單中的實例和方法/變量

[英]Sharing instances and methods/variables within a form in c#

我是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()代碼中使用相同的代碼(以及變量和方法),但是我無法在按鈕代碼的同一代碼塊之外識別任何這些代碼。所以我顯然忽略了一些東西。 我已經嘗試過把所有東西都公之於眾,但這一切似乎沒有任何區別。 似乎沒有什么能在代碼中的任何其他地方傳遞變量/方法/實例。

請注意我是這種語言的初學者,所以我有時會陷入這個(大概)基本的東西。

謝謝,馬丁

問題是變量范圍,現在變量范圍是方法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();
  }
}

我的意思是你需要在類級別聲明變量來解決你的問題,你的代碼的當前問題是變量的范圍僅取決於給定的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM