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 (с фокусом) называется здесь дважды?
[03/08/2013 13:56:40] получил фокус 1
[03/08/2013 13:56:40] : получил фокус 2
Почему эта функция называется дважды каждый раз, когда я нажимаю в своем текстовом поле?
Я уже проверил: у меня есть только одна ссылка на эту функцию.
Edit:
вещественная функция выглядит так
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
Это должно дать вам понять, почему это называется дважды, и кто его вызывает. Просто оставьте точку останова внутри обработчика событий и проверьте трассировку стека в обоих вызовах. –