C# 以最少的重复代码跨多个DataGridView处理函数

C# 以最少的重复代码跨多个DataGridView处理函数,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我在tabcontrol中有10个DataGridView,它们需要编码相同的附加功能,如复制/粘贴。代码相当长,可以涵盖这些内容,我正试图尽量减少重复代码的使用量 我当前的方法是从表单项事件(如KeyDown)中获取“objectsender”,并将其传递给单个函数处理程序方法,在该方法中它被转换为“DataGridView”对象。然后,可以使用DataGridView对象修改任何单元格选择和值 将“对象”转换为“DataGridView”似乎很粗糙。这会不会导致今后的参考问题?这有什么奇怪的

我在tabcontrol中有10个DataGridView,它们需要编码相同的附加功能,如复制/粘贴。代码相当长,可以涵盖这些内容,我正试图尽量减少重复代码的使用量

我当前的方法是从表单项事件(如KeyDown)中获取“objectsender”,并将其传递给单个函数处理程序方法,在该方法中它被转换为“DataGridView”对象。然后,可以使用DataGridView对象修改任何单元格选择和值

将“对象”转换为“DataGridView”似乎很粗糙。这会不会导致今后的参考问题?这有什么奇怪的限制吗?是否有更“广泛使用”的编程实践来完成此任务

功能处理

private void dgv01_KeyDown(object sender, KeyEventArgs e)
{
    dgv_KeyDown_Handler(sender, e);
}

private void dgv02_KeyDown_1(object sender, KeyEventArgs e)
{
    dgv_KeyDown_Handler(sender, e);
}

private void dgv03_KeyDown 
....

private void dgv_KeyDown_Handler(object sender, KeyEventArgs e)
{
    DataGridView dgvHandler = (DataGridView)sender;

    // Handles ctrl+c/ctrl+v using dgvHandler to modify cell values
}

最简单的方法是将所有DataGridView的KeyDown事件指向单个事件处理程序
dgv_KeyDown_handler
是否有一种较短的方法将每个DataGridView的KeyDown事件指向单个事件处理程序,而不是上面提到的方法?是的,只需创建一个事件处理程序,并将其用于所有数据网格。您可以为每个网格的属性网格中的所有网格选择相同的事件处理程序。将“对象”强制转换为“DataGridView”似乎一点也不粗糙。这是一种常见且推荐的模式。对于其他非事件驱动的方法,我通常创建(静态)具有良好名称的函数,并将它们所需的全部传递到其中;在这种情况下,显然需要DGV,然后需要其他什么。。