C#关闭最大化键盘切断程序

时间:2013-12-23 19:16:00

标签: c# windows-8 keyboard lostfocus

我设法在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();
    }
}

所以,基本上,我需要在从当前打开的表单关闭键盘时刷新背景窗口。任何建议表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

我在这里找到了解决方案:

After killing the process for TabletKeyboard(TabTip.exe) application doesn't bring back to its original size in wpf

这是我的新密码:

//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的方法;工作:

  1. 右键点击项目
  2. 突出显示添加,然后单击参考
  3. 确保在“装配”
  4. 下选择了“框架”
  5. 向下滚动并检入“WindowsBase”并点击“确定”
  6. 使用System.Windows.Interop添加;在代码的顶部和完成
相关问题