我写了一个方法给多个TextBox赋值,同时这些TextBox的TextChange事件都指向同一个公共方法,但是TextBox赋值后,没有触发TextChange事件,怎么处理?
我的需求是展示测试数据(很多项),每一项数据都有各自的合格范围,公共方法会将不在合格范围内的数据的背景色做标注,突出显示出来。
public Form1()
{
InitializeComponent();
textBox1.Text = "7";
textBox2.Text = "8";
textBox3.Text = "9";
textBox4.Text = "10";
textBox5.Text = "11";
textBox6.Text = "12";
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (var item in groupBox1.Controls)
{
if (item is TextBox)
{
TextBox tb = item as TextBox;
tb.TextChanged += Tb_TextChanged;
}
}
}
private void Tb_TextChanged(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
if (int.Parse(tb.Text)>10)
{
tb.BackColor = Color.Red;
}
}
}
运行结果:
为什么后面2个textBox值大于10 背景色没有设置红色?,刷不是chang事件没有触发?
formload是在 构造函数之后,就是说你在绑定change事件之前就已经赋值了,
你返过来试试,在构造函数里绑定事件,在load里赋值
一行代码都没有, 网友也不是神仙啊. 能给你看出问题来呀..
源码太多,写了个简单的例子,效果一样,帮忙看看,谢谢了
你在Tb_TextChanged 打个断点不就知道,change事件有没有触发了
我把你的代码复制下来测试了一下,你是不是form_load没有绑定到form上啊,,
其实这种问题打个断点,,应该就解决了呀,,问题不大,,
。。。。你是在form的构造器里赋值的 再load事件里绑定的 form1是先被构造 然后你show的时候才会去执行load事件