C#关闭最大化键盘会切断程序
我设法在Windows8中找到了一个键盘,当我点击一个新的弹出形式的数字上下框时,它会显示出来。不幸的是,在“失去焦点”时关闭键盘后,窗口会失真,在关闭弹出窗口之前不会显示整个程序C#关闭最大化键盘会切断程序,c#,windows-8,keyboard,lostfocus,C#,Windows 8,Keyboard,Lostfocus,我设法在Windows8中找到了一个键盘,当我点击一个新的弹出形式的数字上下框时,它会显示出来。不幸的是,在“失去焦点”时关闭键盘后,窗口会失真,在关闭弹出窗口之前不会显示整个程序 //Close keyboard void CopiedNudPass_LostFocus(object sender, EventArgs e) { Version win8version = new Version(6, 2, 9200, 0); if (Environment.OSVersi
//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();
}
}
因此,基本上,当从当前打开的窗体关闭键盘时,我需要刷新背景窗口。任何建议都将不胜感激。谢谢。我在这里找到了解决方案: 以下是我的新关闭代码:
//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的引用,并向项目中添加外部函数。步骤和附加代码在我在本文中链接到的url中。以下是如何添加WindowsBase的引用,以便使用System.Windows.Interop获取;工作: