首页 新闻 会员 周边

TextBox的TextChanges触发疑问

0
悬赏园豆:5 [已解决问题] 解决于 2021-02-21 10:32

我写了一个方法给多个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事件没有触发?

ChengHB的主页 ChengHB | 初学一级 | 园豆:191
提问于:2021-01-13 14:15
< >
分享
最佳答案
2

formload是在 构造函数之后,就是说你在绑定change事件之前就已经赋值了,
你返过来试试,在构造函数里绑定事件,在load里赋值

收获园豆:5
jqw2009 | 老鸟四级 |园豆:2439 | 2021-01-14 10:23
其他回答(4)
2

一行代码都没有, 网友也不是神仙啊. 能给你看出问题来呀..

czd890 | 园豆:14412 (专家六级) | 2021-01-13 14:43

源码太多,写了个简单的例子,效果一样,帮忙看看,谢谢了

支持(0) 反对(0) ChengHB | 园豆:191 (初学一级) | 2021-01-13 20:55
0

你在Tb_TextChanged 打个断点不就知道,change事件有没有触发了

不知道风往哪儿吹 | 园豆:2035 (老鸟四级) | 2021-01-14 09:17
0

我把你的代码复制下来测试了一下,你是不是form_load没有绑定到form上啊,,

BearHan | 园豆:202 (菜鸟二级) | 2021-01-14 10:05

其实这种问题打个断点,,应该就解决了呀,,问题不大,,

支持(0) 反对(0) BearHan | 园豆:202 (菜鸟二级) | 2021-01-14 10:06
0

。。。。你是在form的构造器里赋值的 再load事件里绑定的 form1是先被构造 然后你show的时候才会去执行load事件

彭小立 | 园豆:634 (小虾三级) | 2021-01-14 11:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册