我设法在Windows 8中获得一个键盘,以便在我弹出的新表单中单击NumericUpDown框时显示。不幸的是,似乎在“丢失焦点”关闭键盘后,窗口失真并且在弹出窗口关闭之前不会显示整个程序。
//Close keyboard
void CopiedNudPass_LostFocus(object sender, EventArgs e)
{
Version win8version = new Version(6, 2, 9200, 0);
if (Environment.OSVersion.Version >= win8version)
{
Process[] oskProcessArray = Process.GetProcessesByName("TabTip");
foreach (Process onscreenProcess in oskProcessArray)
{
onscreenProcess.Kill();
}
Refresh();
}
}
所以,基本上,我需要在从当前打开的表单关闭键盘时刷新背景窗口。任何建议表示赞赏。谢谢。
答案 0 :(得分:0)
我在这里找到了解决方案:
这是我的新密码:
//Close keyboard
void CopiedNudPass_LostFocus(object sender, EventArgs e)
{
Version win8version = new Version(6, 2, 9200, 0);
if (Environment.OSVersion.Version >= win8version)
{
uint WM_SYSCOMMAND = 274;
uint SC_CLOSE = 61536;
IntPtr KeyboardWnd = FindWindow("IPTip_Main_Window", null);
PostMessage(KeyboardWnd.ToInt32(), WM_SYSCOMMAND, (int)SC_CLOSE, 0);
}
}
我还必须添加对WindowsBase的引用并向项目添加外部函数。这些步骤和其他代码都在我在这篇文章中链接的网址中。以下是为WindowsBase添加引用以使用System.Windows.Interop的方法;工作: