2012-11-14 69 views
2

我試圖將事件標記爲已處理但當我嘗試這樣做時引發異常。當我將RoutedEventArgs事件標記爲Handled時,爲什麼會引發異常?

我有下面的函數被調用的LostFocus事件TextBox的:

private void TextBox_LostFocus(object sender, RoutedEventArgs e) 
{ 
    // ... 
    // do something 
    // ... 

    e.Handled = true; 
} 

然而,以下情況例外,即會爲e.Handled = true執行提出:

未處理的異常類型'System.InvalidOperationException' 發生在PresentationCore.dll中

Additio最終信息:每個RoutedEventArgs都必須包含與其關聯的非空 RoutedEvent。

我已經試過移動e.Handled行之前的函數中的其他代碼,但沒有幫助。

爲什麼會引發異常以及哪些可能的解決方法?

+0

您是否檢查過「e」有哪些屬性? –

+0

@Bob .:是的。它具有'Handled'屬性,可以讓我獲取或設置值。 –

+0

在運行時像'e'這樣的聲音是空的。不知道爲什麼,但可以添加一個斷點並檢查? –

回答

1

想通了。 TextBox_LostFocus正在從應用程序的其他位置調用,事件參數爲null

因此,對於某些函數調用TextBox_LostFocuse.Handled不起作用(因爲e爲空),但在其他一些情況下(當它實際上由框架調用時)工作。

相關問題