读书人

vs2005简单的有关问题

发布时间: 2012-11-10 10:48:51 作者: rapoo

vs2005简单的问题
我建了一个windows应用程序,里面有几个textbox,我在它的属性中设置tag为false,可以运行,但是会出现异常,我在构造函数中定义
this.nametextBox.Tag = false;
就可以。那这两个设置有什么区别呢?


System.InvalidCastException: 指定的转换无效。
在 WindowsApplication1.Form1.Validatedok() 这是异常,代码太长只能节选!



this.nametextBox.Validating +=new
System.ComponentModel.CancelEventHandler(this.textboxempty_Validating);


private void textboxempty_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
TextBox tb = (TextBox)sender;
if (tb.Text.Length == 0)
{
tb.BackColor = Color.Red;
tb.Tag = false;
}
else
{
tb.BackColor = System .Drawing.SystemColors.Window;
tb.Tag = true;
}
Validatedok();
}


private void Validatedok()
{
this.okbutton1.Enabled = ((bool)(this.nametextBox.Tag)
&& (bool)(this.addresstextbox.Tag)
&& (bool)(this.agetextBox4.Tag)
&& (bool)(this.occupationtextBox3.Tag));
}

[解决办法]
在它的属性中设置tag为false,取tag的值为string类型,直接转为bool类型就会报错,如果在构造函数中设置,用false给tag赋值,会默认为bool型,如果你在程序中this.nametextBox.Tag = "false",同样转换会报错。

读书人网 >C#

热点推荐