2

如何获取事件以向函数发送参数?所以我可以同时使用 dataGridView1_MouseMove 函数来拥有 dataGridView1 和 dataGridView2 吗?

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 使用相同的函数?

4

1 回答 1

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 实例,它们都将使用相同的事件处理程序。

于 2012-08-17T16:10:55.093 回答