如何让事件向事件处理程序发送参数?

时间:2012-08-17 16:07:59

标签: c# .net events datagridview

如何让事件向函数发送参数?所以我可以拥有dataGridView1& dataGridView2都使用函数dataGridView1_MouseMove?

private void dataGridView1_MouseMove(object sender, MouseEventArgs e)
{
    if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
    {
        // If the mouse moves outside the rectangle, start the drag.
        if (dragBoxFromMouseDown != Rectangle.Empty &&
        !dragBoxFromMouseDown.Contains(e.X, e.Y))
        {
            // Proceed with the drag and drop, passing in the list item.                   
            DragDropEffects dropEffect = dataGridView1.DoDragDrop(
                  dataGridView1.Rows[rowIndexFromMouseDown],
                  DragDropEffects.Move);
        }
    }
}

我目前正在使用此函数以及其他一些函数来允许拖放dataGridView1中的行,如何对dataGridView2使用相同的函数?

1 个答案:

答案 0 :(得分:2)

  

如何对dataGridView2使用同样的功能?

如果您想使用相同的方法,则不需要直接引用dataGridView1

相反,将其更改为使用sender作为DataGridView,如下所示:

private void dataGridView1_MouseMove(object sender, MouseEventArgs e)
{
    // Use this instead of dataGridView1
    DataGridView dgv = sender as DataGridView;

    if (dgv == null) // Add some checking
    {
        return;
    }

    if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
    {
         //...

完成此操作后,您可以将订阅添加到任意数量的DataGridView实例,并且它们都将使用相同的事件处理程序。