触发另一个事件中的事件

本文关键字:事件 另一个 | 更新日期: 2023-09-27 18:14:10

我需要帮助在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. 是的,你可以,但只有当事件在你自己的类。你甚至不能引发基类的事件。你可以在基类中放置一个方法来引发事件,然后调用它。
  2. 你放在那里的代码是添加另一个事件处理程序,而不是引发一个事件;你不需要这样做。
  3. 如果是按钮,使用btnDoSomething。PerformClickEvent (winforms)
  4. 如果处理程序在你的代码中,你可以调用它而不引发事件(注释者假设这是你想要做的,但实际上有很多情况下你需要更多)btnDoSomething_Click(null, null) - null通常有效,因为处理程序代码很少关心发送者或参数,如果你不引用它们,你不需要它们。
  5. 如果你能使用#4,你也可以像前面提到的那样重构。通常不需要。但通常很容易做到,无论如何,为了清晰起见,值得这样做。
  6. 对于从任何类型的Windows小部件映射的对象,请查看SendMessage和PostMessage API调用。不过,这远远超出了这个答案的范围。不适用于非windows支持的对象(但你的示例暗示窗口)。