定义了一个事件
textBox1_TextChanged程序中有代码段:
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);textBox1.Text = "ABC";this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);我跟踪了一下,为什么在执行到textBox1.Text = "ABC";以后还会执行textBox1_TextChanged事件?
textBox1_TextChanged程序中有代码段:
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);textBox1.Text = "ABC";this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);我跟踪了一下,为什么在执行到textBox1.Text = "ABC";以后还会执行textBox1_TextChanged事件?
到这里又增加了一个委托事件啊。当然就会执行了。
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
执行到这就结束了 你已经把此事件给销毁掉了
为什么还执行textBox1_TextChanged事件?
{
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);
this.textBox2.TextChanged -= new System.EventHandler(this.textBox2_TextChanged);
textBox1.Text=dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged);
}
运行到
textBox1.Text=dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString();
这句时还执行textBox1.TextChanged 事件,晕!
textBox1.Text=dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
以及相应事件textBox1_TextChanged处加个断点
执行到Text改变时不会立即执行相应方法,而是直接执行添加事件,所以最终还是会响应的
我看了一下Form_Load事件
private void Form_Load(object sender, EventArgs e)
{
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);
this.textBox2.TextChanged -= new System.EventHandler(this.textBox2_TextChanged);
Refresh_dataGridView1();
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged);
}
而Refresh_dataGridView1()里面是:
{
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);
this.textBox2.TextChanged -= new System.EventHandler(this.textBox2_TextChanged);
......
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged);
}是不是这个道理?请高手解答:
在执行完Form_Load事件后,textBox1.TextChanged和textBox2.TextChanged都加了2次了,所以当我执行dataGridView1_MouseUp事件只减掉1次还是会执行textBox1.TextChanged事件?
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
后会变成加了2个textBox1.TextChanged?而
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
就没问题?