当我点击不同的按钮时,保持对文本框的关注

本文关键字:文本 按钮 | 更新日期: 2023-09-27 18:04:16

我目前正在尝试为WinCE应用程序开发一个自定义键盘。目前我有一个表单与文本框和按钮。问题是,当我点击鼠标SendInput(以确保文本框捕获该输入)时,我如何保持对键盘的关注。一种方法是设置"可聚焦"属性,但我似乎不能在Windows窗体上设置它。我希望有人能帮我。谢谢!

当我点击不同的按钮时,保持对文本框的关注

如果你不害怕迁移到本地,你可以考虑实现一个软件输入面板(SIP)。它将按照您描述的方式运行,并且可以被设备上运行的任何应用程序使用。这个文档是针对Compact 2013的,但它也适用于以前的版本(你可以在MSDN上找到特定于发行版的版本,但他们很好地隐藏了它们):http://msdn.microsoft.com/en-us/library/ee500563.aspx

您应该在按钮按下事件处理程序上设置TextBox.Focus()。我假设按钮具有KeyPressKeyDown功能。

一个更灵活的选择是存储最后一个焦点控件。

private Control lastFocusedControl;

当文本框聚焦时,它使用GotFocus事件设置值。

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

然后在事件处理程序中,您可以简单地执行。

lastFocusedControl.Focus();

虽然它是为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提供自定义键盘SDK API集,用于编写Windows Mobile (c/c++)的自定义软件键盘。