2014-09-18 34 views
0

如何獲取當前焦點放在XAML應用程序上的文本框的名稱?獲取當前焦點的文本框的名稱

我試過下面,但不斷收到以下錯誤信息:Object reference not set to an instance of an object。我究竟做錯了什麼?

var textbox = Keyboard.FocusedElement as TextBox; 
MessageBox.Show(textbox.Name); 
+0

我敢打賭,這是一個XY問題。你想達到什麼目的? – 2014-09-18 23:29:21

+1

如果聚焦的元素當前不是TextBox,那麼將返回'null'。在你的情況下,在MessageBox.Show()之前做一個'if textbox!= null'是否可以接受? – 2014-09-18 23:29:22

回答

1

如果具有焦點的元素不是TextBox,你會得到你所看到的異常,所以你應該測試的是:

var textbox = Keyboard.FocusedElement as TextBox; 

if (textbox != null) 
    MessageBox.Show(textbox.Name); 

而且,如果這個代碼在點擊一個按鈕被執行(例如),你必須確保按鈕無法通過設置「調焦」假偷焦點從什麼元素目前它:

<Button Content="Press" Focusable="False" Command="{Binding Path=PressCommand}" /> 
+0

謝謝,我認爲這是問題所在。按鈕不斷從文本框元素中竊取焦點。 – methuselah 2014-09-18 23:44:18

+0

沒問題,那也是絆倒了我。 – 2014-09-19 00:22:22