2015-08-05 2 views
0

Есть ли способ, который инициирует изменение фокусировки и может быть переопределен?Метод изменения фокуса

Моя цель состоит в том, чтобы программа автоматически выбирала ближайшие данные из базы данных в поля ввода, когда пользователь меняет свою фокусировку/нажимает ввод или вкладку в соответствующем поле. Я все еще ищу способ сделать это, когда пользователь выбирает элемент мышью.

Я знаю, что это может быть реализовано при щелчке мыши, но я отказываюсь верить, что нет общего метода изменения фокуса.

ответ

1

А что-то вроде этого:

foreach(Control ctrl in this.Controls) 
{ 
    ctrl.Enter += new EventHandler(Focus_Changed); // Your method to fire 
} 

перебрать все элементы управления и добавить ввода-событие. Привяжите этот обработчик к вашему методу.

Edit:
Только в случае, если вам интересно, почему «Enter», а не «LostFocus» или что-то вроде этого: От моих знаний не каждый элемент управления получил фокус-события. Как я уже видел, «Ввод» представлен для всех. Возможно, есть исключения. Должен быть проверен ...

+0

Спасибо. Это покажется лучшим ответом. – touko

+0

Добро пожаловать. Просто позаботьтесь о «Enter» -Event. Возможно, вам нужно выбрать еще один (Оставить). Не могу проверить это, я сейчас в режиме отладки. – C4u

0

Для этого вы можете использовать событие Control.Enter и Control.Leave. См. На MSDN Control.Enter и Control.Leave.

textBox1.Enter += textBox1_Enter; 
textBox1.Leave += textBox1_Leave; 

private void textBox1_Enter(object sender, System.EventArgs e) 
{ 
    // the control got focus 
} 

private void textBox1_Leave(object sender, System.EventArgs e) 
{ 
    // the control lost focus 
} 
Смежные вопросы