3
this.textBox1.Enter += new System.EventHandler(this.textBox1_Enter);
(...)
int test = 0;
private void textBox1_Enter(object sender, EventArgs e)
{
///
/// update completion from db
///
++test;
Log("got focus " + test);
}
我得到这样的结果从我的日志语句:为什么我的textBox_enter事件(焦点)在这里调用两次?
[2013年3月8日十三点56分40秒]:有重点1
[2013年3月8日十三点56分40秒] :得到焦点2
为什么我每次点击文本框时都会调用这个函数两次?
我已经检查:我只有一个引用这个函数。
编辑:
真正功能更像是
private void textBox1_Enter(object sender, EventArgs e)
{
// update completion
List<string> allValues = getValuesFromDb();
myAutoComplete = new AutoCompleteStringCollection();
myAutoComplete.AddRange(allValues.ToArray());
textBox1.AutoCompleteCustomSource = myAutoComplete; /// this line calls enter event again
++test;
Log("got focus " + test);
}
您是否检查过两个调用的堆栈跟踪? –
我这样做。我应该看到什么? – mickro
这应该给你一个线索,说明它为什么被调用两次以及谁调用它。只需在您的事件处理程序中放置一个断点并在两个调用中检查堆栈跟踪。 –