如何调用控件的事件处理程序?获取 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();
}
我正在尝试从另一个事件调用 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();
}