我目前正在尝试为WinCE应用程序开发一个自定义键盘。目前我有一个带有文本框和按钮的表单。问题是当我单击鼠标到SendInput时,如何保持对键盘的关注(以确保文本框捕获该输入)。一种方法是设置“可聚焦”属性,但我似乎无法在Windows窗体上设置它。我希望有人可以帮助我。谢谢!
答案 0 :(得分:2)
如果您不害怕迁移到本地,您可以考虑实施软件输入面板(SIP)。它将以您描述的方式运行,并可由设备上运行的任何应用程序使用。 此文档适用于Compact 2013,但它也适用于以前的版本(您可以在MSDN上找到特定于发行版的版本,但它们非常适合隐藏它们): http://msdn.microsoft.com/en-us/library/ee500563.aspx
答案 1 :(得分:1)
您应该在按钮事件处理程序上设置TextBox.Focus()
。我假设该按钮具有KeyPress
或KeyDown
功能。
更灵活的替代方案是存储最后一个聚焦控件。
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 ++)编写自定义软件键盘。