Сохраняя фокус на текстовом поле, пока я нажимаю на разные кнопки

В настоящее время я пытаюсь разработать пользовательскую клавиатуру для приложения WinCE. В настоящее время у меня есть форма с текстовым полем и кнопкой. Вопрос в том, как сохранить фокус на клавиатуре, когда я щелкаю мышью по SendInput (чтобы текстовое поле захватывало этот ввод). Один из способов - установить свойство "Фокусируемый", но я не могу установить его в форме Windows. Я надеюсь, что кто-то может помочь мне в этом. Спасибо!

3 ответа

Решение

Вы должны установить TextBox.Focus() на кнопку нажмите обработчик событий. Я предполагаю, что кнопка имеет KeyPress или же KeyDown функция.

Более гибкой альтернативой будет хранение последнего сфокусированного элемента управления.

private Control lastFocusedControl;

И когда текстовое поле сфокусировано на нем, оно устанавливает значение, используя GotFocus событие.

private void TextBox_GotFocus(object sender, EventArgs e)
{
    lastFocusedControl = (Control)sender;
}

И тогда в обработчике событий вы можете просто сделать.

lastFocusedControl.Focus();

Если вы не боитесь перейти на "родную" сторону, вы можете рассмотреть возможность использования программной панели ввода (SIP). Он будет вести себя так, как вы описываете, и может использоваться любым приложением, работающим на устройстве. Эта документация предназначена для Compact 2013, но она также действительна для предыдущих выпусков (вы можете найти специфичные для выпусков версии в MSDN, но они довольно хорошо их спрятали): http://msdn.microsoft.com/en-us/library/ee500563.aspx

Хотя для VB.Net есть несколько хороших идей: http://msdn.microsoft.com/en-us/magazine/hh708756.aspx

Смотрите WS_EX_NOACTIVATE и

If (m.Msg = WM_MOUSEACTIVATE) Then
  m.Result = MA_NOACTIVATE
Else
  MyBase.WndProc(m)
End If

Теперь задача состоит в том, чтобы адаптировать это к вашей идее (отдельный процесс и форма? Или панель с кнопками?).

OTOS MS предоставляет специальный API-интерфейс клавиатуры SDK для написания пользовательских программных клавиатур для Windows Mobile (c/C++).

Другие вопросы по тегам