[英]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.