2017-09-14 85 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