关于C#修改控件Text属性时的奇怪问题
好麻烦 2008-11-05 10:01:54 今天写了一个Socket连接的程序,连接没有问题,但是连接成功后无法修改系统界面上Label、textBox等控件的Text属性值。
比如:界面上有个Label控件,默认Text属性为“侦听”,连接后我想改为“连接成功”。
代码如下
public void Test(EndPoint ep)
{
if(port[1].Equals(textBox2.Text.ToString().Trim()) && cli_1.IsConnected==false)
{
cli_1.Connect(textBox10.Text, Convert.ToInt32(this.textBox9.Text.ToString()));
//将Socket连接加入到连接池中
sp.addSocket(cli_1,0);
//this.label13.Text="端口:"+port[1].ToString()+"连接成功";
//上面用的是直接修改的办法,不成功,下面用的是使用委托的办法,也没效果,label13的值始终是“侦听”
//如果不使用委托,直接修改Text属性,系统不修改但也不报错(我没有cath任何Exception)
SetLabelText(this.label13, "端口:" + port[1].ToString() + "连接成功");
return;
}
我觉得我这么写应该不算是跨线程操作吧?
还有一个问题,就是我界面中还有一个textBox控件,作用是连接远端IP的地址,比如上面的textBox10.Text。默认Text属性为“127.0.0.1”。在系统运行时,修改这个值后再进行连接(比如修改为“192.168.0.222”),系统会提示Socket连接地址无效。Debug出来textBox10的值为空。
大家有没有遇到过这个问题?请指教~
另:这些控件的默认值都是在界面中直接修改,存在XXXDesigner.cs文件的InitializeComponent()方法中。