2013-12-23 39 views
0

我設法讓Windows 8中的鍵盤在我彈出的新窗體中單擊NumericUpDown框時顯示。不幸的是,在關閉「丟失焦點」後,似乎窗口變形並且不顯示整個程序,直到彈出窗口關閉。C#關閉最大化鍵盤關閉程序

//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

,我發現我的解決方案在這裏:

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. 向下滾動併爲您在「WindowsBase」,點擊OK
  5. 添加使用System.Windows.Interop;在您的代碼頂部並完成您的工作