如何调用控件的事件处理程序?获取 EventArgs 值 C#

How to call a Control's event handler? Get EventArgs value C#

我正在尝试从另一个事件调用 OnCellEditEnding 事件,

private void BillsTableRecords_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
    // do stuff here
}

我的问题是我不知道如何将 DataGridCellEditEndingEventArgs 传递到方法中,即下面方法中的 e 显然在引用 RoutedEventArgs 时出错不是 DataGridCellEditEndingEventArgs.

private void BillsRecordsCheckBox_OnChecked(object sender, RoutedEventArgs e)
{   
    BillsTableRecords_OnCellEditEnding(sender, e);
}

那么如何从DataGridCellEditEndingEventArgs获取值,以便我可以在方法中传递该值?请注意,此时已选中 DataGrid 单元格,因此它将包含一个值。

试试看

private void BillsRecordsCheckBox_OnChecked(object sender, RoutedEventArgs e)
{   
    BillsTableRecords_OnCellEditEnding(sender, new DataGridCellEditEndingEventArg());
}

如果要保留 RoutedEventArgs 的参数,请将它们添加到 DataGridCellEditEndingEventArg

的构造函数中

我不推荐这种方法。事件处理程序将被事件调用;他们的签名并不适合独立通话。如果您在事件处理程序中执行业务代码,这也不是好的设计,因为您的事件处理程序是 UI 代码,应该与业务代码分开。

最好的方法是创建一个专用方法来执行您想要的操作,并从两个事件处理程序调用它:

private void DoStuff(/* add the parameters you need*/) {
    //do stuff
}

private void BillsTableRecords_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
    DoStuff();
}

private void BillsRecordsCheckBox_OnChecked(object sender, RoutedEventArgs e)
{   
    DoStuff();
}