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 に答える