我是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()代码中使用相同的代码(以及变量和方法),但是我无法在按钮代码的同一代码块之外识别任何这些代码。所以我显然忽略了一些东西。我已经尝试过把所有东西都公之于众,但这一切似乎没有任何区别。似乎没有什么能在代码中的任何其他地方传递变量/方法/实例。
请注意我是这种语言的初学者,所以我有时会被这个(大概)基本的东西困住。
谢谢, 马丁
答案 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();
}
}
我的意思是你需要在类级别声明变量来解决你的问题,你的代码的当前问题是变量的范围仅取决于给定的方法