当我点击不同的按钮时,保持对文本框的关注
本文关键字:文本 按钮 | 更新日期: 2023-09-27 18:04:16
我目前正在尝试为WinCE应用程序开发一个自定义键盘。目前我有一个表单与文本框和按钮。问题是,当我点击鼠标SendInput(以确保文本框捕获该输入)时,我如何保持对键盘的关注。一种方法是设置"可聚焦"属性,但我似乎不能在Windows窗体上设置它。我希望有人能帮我。谢谢!
如果你不害怕迁移到本地,你可以考虑实现一个软件输入面板(SIP)。它将按照您描述的方式运行,并且可以被设备上运行的任何应用程序使用。这个文档是针对Compact 2013的,但它也适用于以前的版本(你可以在MSDN上找到特定于发行版的版本,但他们很好地隐藏了它们):http://msdn.microsoft.com/en-us/library/ee500563.aspx
您应该在按钮按下事件处理程序上设置TextBox.Focus()
。我假设按钮具有KeyPress
或KeyDown
功能。
一个更灵活的选择是存储最后一个焦点控件。
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++)的自定义软件键盘。