2014-09-04 155 views
2

當編輯文本框時按下輸入/返回鍵時,我想隱藏軟鍵盤。這是我迄今爲止在C#中的:如何在WindowsPhone/Windows 8.1上按Enter鍵時隱藏軟鍵盤?

private void SearchBox_KeyUp(object sender, KeyRoutedEventArgs e) 
    { 
     TextBox textBox = sender as TextBox; 
     if(e.Key == VirtualKey.Enter) 
     { 
      this.Focus(FocusState.Programmatic); // sending focus to Page to hide keyboard 
     } 
    } 
+0

這是行不通的嗎?如果不是,會發生什麼?請進一步解釋。 – 2014-09-04 15:30:52

+0

您已通過禁用並重新啓用textBox來解決此問題。我嘗試的開關焦點方式不起作用。 – 2014-09-04 16:06:16

回答

8

嘗試立即禁用,然後啓用文本框。

if(e.Key == VirtualKey.Enter) 
{ 
    textBox.IsEnabled = false; 
    textBox.IsEnabled = true; 
} 
+0

這個愚蠢的東西怎麼可能是w8.1的解決方案。 Keyboard.hide或類似的東西不能存在? – 2015-05-29 14:54:44

+0

此解決方案僅在「IsTabStop」設置爲「True」的可視樹中存在另一個控件時纔有效。否則,TextBox將重新獲得焦點並且虛擬鍵盤將保持在屏幕上。 – 2015-11-18 16:20:37

4

試試這個..

private void SearchBox_KeyUp(object sender, KeyRoutedEventArgs e) 
{   
    if (e.Key == VirtualKey.Enter) 
    { 
     this.Focus(); 
    } 
} 

這應該工作。

4

啓用和禁用TextBox對我無效。
我用這對一款Windows Phone 8.1運行時應用:

private void TextBox_KeyUp(object sender, KeyRoutedEventArgs e) 
{ 
    if (e.Key == Windows.System.VirtualKey.Enter) 
    { 
    Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().CoreWindow.IsInputEnabled = false; 
    Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().CoreWindow.IsInputEnabled = true;     
    } 
} 
0

我知道這已經回答了,但我想分享我的解決辦法,我只好用虛擬頁的問題(與可見網格/摺疊)在XAML頁面中,當軟鍵盤出現並且頁面改變時,軟鍵盤不會自動隱藏,這顯然是因爲聚焦控制的父母被摺疊,奇怪和沒有記錄的行爲。我的解決辦法是設置要顯示的聚焦下一個頁面的元素,所以OS理解並隱藏軟鍵盤:

xamlButton.Focus(FocusState.Programmatic); 
selectPage(1); 

如果選擇數據頁(INT);通過索引設置頁面的可見或摺疊屬性。

將焦點設置爲一個按鈕效果很好,因爲按鈕沒有鍵盤輸入。

5
private void BobbinRunningLength_KeyUp(object sender, KeyRoutedEventArgs e) 
    { 
     if (e.Key == VirtualKey.Enter) 
     { 
      this.Focus(FocusState.Programmatic); 
     } 
    } 

這對我有效。

+0

UWP的正確解決方案 – JTIM 2016-12-14 01:28:27