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",同样转换会报错。