【问题标题】:C# closing maximized keyboard cuts off programC#关闭最大化的键盘切断程序
【发布时间】:2013-12-24 07:11:18
【问题描述】:

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

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

【问题讨论】:

    标签: c# windows-8 keyboard lostfocus


    【解决方案1】:

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

    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 的引用并向项目添加外部函数。步骤和附加代码在我在这篇文章中链接到的 url 中。以下是添加 WindowsBase 引用以使用 System.Windows.Interop 的方法;上班:

    1. 右键单击项目
    2. 突出显示添加并单击参考
    3. 确保您在“程序集”下选择了框架
    4. 向下滚动并检查“WindowsBase”并点击确定
    5. 使用 System.Windows.Interop 添加;在你的代码和你完成的顶部

    【讨论】:

      猜你喜欢
      • 2012-09-07
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多