在另一个事件中发射一个事件

时间:2014-07-21 15:37:26

标签: c# events

我需要在C#中触发事件的帮助

基本上我点击复选框时会触发一个onclick事件

void OnClick(object sender, RoutedEventArgs e) 
{
   ...
}

我需要在C#中触发事件的帮助

基本上我点击复选框时会触发一个onclick事件

void OnClick(object sender, RoutedEventArgs e) 
{
   ...
}

但是,我需要在另一个事件被触发后触发此事件,因此在这个新事件中,我是否可以触发上述事件?

private void DataGridCell_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{     
   switch(dataGrid.Name)
   {
      case "Customer"
      //fire OnCLick Event
      break;
   }
}

我尝试了类似

的内容
??? += new MouseEventHandler(OnClick);

但我不确定这是否真的有用。

1 个答案:

答案 0 :(得分:1)

  1. 是的,你可以,但只有在你自己的班级活动中。你甚至无法举起基类活动。你在基类中放了一个方法来引发事件,然后调用它。
  2. 你放在那里的代码是添加另一个事件处理程序,而不是引发事件;你不需要这样做。
  3. 如果是按钮,请使用btnDoSomething.PerformClickEvent(winforms)
  4. 如果处理程序在你的代码中,你可以在不引发事件的情况下调用它(评论者认为这是你想要做的事情,但是在很多情况下,你需要的不仅仅是这个)btnDoSomething_Click(null, null) - null通常有效,因为处理程序代码很少关心发件人或参数,如果你不引用它们,则不需要它们。
  5. 如果你可以使用#4,你也可以按照提到的那样重构。通常不需要。但通常很容易做到这一点,无论如何都值得做。
  6. 对于从anysort的Windows小部件映射的对象,请查看SendMessage和PostMessage API调用。但Wayyyy超出了这个答案的范围。不适用于非Windows支持的对象(但您的示例意味着窗口)。