2017-09-14 86 views
-1

當這個事件被觸發:火災多SelectionChanged事件

private void DataGrid_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) 

我也需要火

private void TabControl_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) 

的DataGrid_SelectionChanged裏面,我怎麼能轉換髮送者?謝謝。

+0

那些是方法,而不是'事件'。而'event's只能通過定義它們的封閉類型來提升。如果您想在調用第一種方法時調用另一種方法,則應該手動執行。 – dcg

+0

只是在調用此事件處理程序方法時傳遞您的選項卡控件abject .. 'TabControl_SelectionChanged(tabControl1,null);'或者您可以將兩個控件事件綁定到同一事件處理程序。 'DataGrid_SelectionChanged + = Control_SelectionChange; TabControl.SelectionChanged + = Control_SelectionChange;' –

+0

**這是不好的做法**你可以從第一個調用第二個處理程序,但是最終會產生令人困惑的代碼,很快你會添加奇怪的特殊情況來避免*第二處理程序中的一些*代碼。如果當TabControl選擇在* DataGrid選擇更改時更改*和*時,需要發生一些代碼,請將該代碼放入同一類中的另一個方法中,併爲該方法指定一個適當的名稱,以描述它的功能。從兩個處理程序中調用它。 –

回答

0

什麼阻止你這樣打電話?

private void DataGrid_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) 
{ 
    . . . 
    TabControl_SelectionChanged(yourTabControl, e); 
    . . . 
} 
+0

這是一個很好的做法嗎? –

+0

@MarioSerda不,它不是。這裏的實際目標是什麼?你爲什麼說你需要模擬TabControl的SelectionChanged事件? –

+0

它沒有問題。 – SeM