1
我爲DataGrid創建了一個擴展。我想知道在事件中做什麼更好的方法。在控件擴展中,覆蓋或addHandler?
是更好地增加一個處理程序是這樣的:
class MyDataGrid : DataGrid {
public MyDataGrid() {
this.PreviewKeyDown+= MyDataGrid_PreviewKeyDown;
}
protected void MyDataGrid_PreviewKeyDown(/* args */) {/* do stuff */}
}
或與這樣的控制裝置:
class MyDataGrid : DataGrid {
public MyDataGrid() { }
protected override void OnPreviewKeyDown(/* args */) {/* do stuff */}
}
如果我讓base.OnPreviewKeyDown(e);
的覆蓋,它做的一樣事件處理程序?
如果您從重寫的方法調用基方法,則兩者都是等效的。 – 2014-11-14 19:27:40
第二個片段更好。它迫使你思考一個你還沒有想過的細節。你在「做什麼」之前調用base.OnPreviewKeyDown()?或之後?還是根本不?現在你不知道的可能性很大,因爲你還沒有想過。它很重要。事件的問題是,如果事實證明它確實重要,則無法解決問題。 – 2014-11-14 19:44:25