.NET - Какой элемент управления имеет фокус? - Visual Studio 2008 - PullRequest
0 голосов
/ 17 ноября 2010

В настоящее время я перевожу приложение Windows Form, написанное на VB6, на веб-страницу, написанную в Visual Studio 2010.

В VB6 легко определить, какой элемент управления фокусируется на форме, используя '.getFocus()».Я пришел к выводу, что это не так просто, если вообще возможно, в vb2008.

Возможно ли это сделать?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

В WinForms вы можете создать цикл foreach , подобный этому, и проверить, имеет ли конкретный элемент управления фокус:

foreach (Control item in this.Controls)
{
 if (item.Focused)
  //codes to handle the condition
}  

Или, как сказал spacemonkeyes, использовать this.ActiveControl или версию VB Me.ActiveControl

Однако для веб-страницы я думаю, что вы должны использовать JavaScript. document объект имеет свойство с именем ActiveElement , которое, насколько мне известно, только IE поддерживает это свойство: document.ActiveElement
Возвращает ссылку на сфокусированный элемент управления.
Чтобы использовать его на стороне сервера, вы должны иметь форму, которая отправляется на сервер, или вы можете использовать Ajax для отправки этого конкретного элемента управления.Требуются довольно сложные кодировки.

1 голос
/ 17 ноября 2010

Me.ActiveControl даст вам ссылку на объект управления.Это возвращает элемент управления формы Windows, но вы должны иметь возможность использовать Me.ActiveControl.Name или один из других параметров, чтобы получить то, что вам требуется, ничего не возвращает, если ни один элемент управления не имеет фокуса

Но, как было указано, это работает толькоWindows формы, веб-приложений вам нужно будет сделать javascript skullduggery, чтобы получить то, что вы хотите.

...