как потерять контроль над текстовым полем при нажатии снаружи

У меня есть текстовое поле в форме окна. В настоящее время фокус находится на текстовом поле, и я ввожу текст. Теперь я щелкаю за пределами текстового поля, но внутри окна. Это действие не приводит к тому, что текстовое поле теряет фокус. Курсор все еще мигает в текстовом поле. Если бы щелчок был на другом элементе управления, текстовое поле потеряло бы элемент управления.

Как сделать так, чтобы текстовое поле теряло контроль при нажатии за его пределами (не только на другом элементе управления, но и в любом месте внутри формы)?

Заранее спасибо.

Датте


person dattebayo    schedule 06.05.2010    source источник


Ответы (1)


Потому что вы нажимаете на элемент управления, который не может принимать фокус (например, форма, метка и т. д.). Если вы нажмете, например, на другое текстовое поле, фокус должен переместиться.

Чтобы переместить фокус программно (т. е. в событии OnClick формы), используйте метод control.Focus.

person munissor    schedule 06.05.2010
comment
Ознакомьтесь с документацией по свойству Control.CanFocus msdn.microsoft.com/en-us/library/ - person munissor; 06.05.2010
comment
Это не работает для меня. Form.CanFocus возвращает значение true. В событии OnClick или MouseClick я явно пишу this.Focus() [даже пробовал this.Select()], фокус по-прежнему находится в текстовом поле. Любое другое решение? - person dattebayo; 07.05.2010
comment
Фокусироваться на форме не имеет смысла. Может быть, ваше текстовое поле является единственным элементом управления в форме? или у него самый низкий TabIndex внутри формы? Другая возможность может заключаться в том, что у вас есть событие Validate для вашего текстового поля, и проверка не проходит, поэтому текстовое поле не теряет фокус. - person munissor; 07.05.2010