C#..窗体问题,关于..控制 TextBox的"TextChanged"事件...怎么做...
我有 "1" 个 TextBox,和 "1"个 CheckBox 还有一个 "Button"
1,当我 的 Button Click的时候,我想触发一个事件A(事件A是根据 TextBox的文本改变触发的).
2,所以后来我想在 "CheckBox"的 "Checked"属性为 "true"的时候, "TextBox"文本改变时也发生 事件A.所以我这样写:
private void txtInteger_TextChanged(object sender, EventArgs e) { //TextBox事件.
btnConvert_Click(sender, e); //Button事件.
}
但是问题来了...如果用户把 "CheckBox" 的属性 "Checked"设置为 "false"这时怎么取消哈?
也就是说,用户应该根据需要,是要"实时性"地让 TextBox触发和 Button的 Click事件,还是只能 通过 Button触发...
这个大家都应该做过的吧...怎么做比较好点...是不是要通过委托...? 展开
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
this.textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
else
this.textBox1.TextChanged -= new EventHandler(textBox1_TextChanged);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
button1_Click(sender,e);
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("test");
}
以上是测试代码
将checkBox默认设置为true.
这是界面
大哥,你好像没有认真测试过哦.. 你再检查一下..貌似不行的...其实开始我就好像这么做了...这样是控制不了的...也就是说.
private void textBox1_TextChanged(object sender, EventArgs e)
{
button1_Click(sender,e);
}
是不能在你的checkBox1_CheckedChanged()事件中控制...
我测试的没问题啊,选中时,在文本框中输入,会弹出对话框,也就是单击事件中的代码,如图:
如果取消复选框选中状态,不会触发,效果如下:
-------------------------------------------------------------------------------
我对你的话的理解是:用复选框的选中状态来确定是否让文本框具备TextChanged事件(而TextChanged事件中又模拟了单击事件,所以复选框的选中状态间接控制着单击事件中的代码执行)。我上面的代码的意图是->1.选中复选框时:在文本框输入字符会触发TextChanged事件,进而模拟执行了单击事件;2.没有选中复选框时:在文本框输入字符时不会触发TextChanged事件(因为TextChanged事件已被取消),继而不会执行单击事件中的代码。
我测试的代码是没有一点问题的,你看一下我是否正确理解了你的意图,如果你也是这样想的,那你就得再看看你的代码是不是哪里出了问题!
略不清楚。。试着理解。大概的意思是,
1、你textbox的textchanged事件,textbox的值改变的时候能触发
2、自己按下按钮的时候也能触发。
3、而checkbox是可以控制1和2点能否触发,相当于一个总开关。如果是这样的话。你只要这么写就可以了。。
//先写个函数,这个函数代表这个事件具体要做的事情
private void DoEvent()
{
//判断checkbox是否选中,如果没选中就直接退出函数不做后面的事了
if(checkBox.Checked == false)
return;
//后面这里写具体要做的,比如计算什么,或者弹个窗,或者读数据库。
//MessageBox.Show("事件触发了!");
//....
}
private void txtInteger_TextChanged(object sender, EventArgs e)
{
DoEvent();
}
private void button1_Click(object sender, EventArgs e)
{
DoEvent();
}
你这样的方式,思想就是让"Button"的Click 和 TextChecked去做同样的一件事...是可以的...请问...我好像用委托...
就像楼下 "fujie724"的方式...这么做哈...?你知道么...
简单方法能解决问题。。为什么还要去用复杂的。。
而且复杂的方法也不一定适用你这个问题。。
委托在这里并不合适。。
这个我想过..但是我学 委托不久...事件的注册用得不得很随意...不怎么会..