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

时间:2014-05-21 05:29:15

标签: c# compact-framework windows-ce

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

3 个答案:

答案 0 :(得分:2)

如果您不害怕迁移到本地,您可以考虑实施软件输入面板(SIP)。它将以您描述的方式运行,并可由设备上运行的任何应用程序使用。 此文档适用于Compact 2013,但它也适用于以前的版本(您可以在MSDN上找到特定于发行版的版本,但它们非常适合隐藏它们): http://msdn.microsoft.com/en-us/library/ee500563.aspx

答案 1 :(得分:1)

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

更灵活的替代方案是存储最后一个聚焦控件。

private Control lastFocusedControl;

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

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

然后在事件处理程序中,您可以完成。

lastFocusedControl.Focus();

答案 2 :(得分:0)

虽然它适用于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 ++)编写自定义软件键盘。