如何从按钮调用Datagridview单元格双击事件?

时间:2016-08-18 10:14:27

标签: c# datagridview

我试图从另一个按钮调用datagridview单元格事件方法。

DataGridView单元格双击方法

private void ListDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                ListDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                DataGridViewRow row = this.ListDataGridView.Rows[e.RowIndex];

                comboBox2.Text = row.Cells[1].Value.ToString();

            }
        }

这是我调用此方法的按钮

private void button6_Click(object sender, EventArgs e)
{
  ListDataGridView_CellDoubleClick(sender, e);
}

错误我正在接收

  

错误3类型或命名空间名称' DataGridViewCellEventHandler'不   命名空间中不存在'系统' (你错过了一个集会吗?   参考?)C:\ VisualC#\ Projects \ DataGridViewApplication \ DataGridViewApplication \ List.Designer.cs 340 46 DataGridViewApplication

我做了什么:

我将EventArgs更改为DataGridViewCellEventArgs。

private void button6_Click(object sender, DataGridViewCellEventArgs e)
   {    
     ListDataGridView_CellDoubleClick(sender, e);
   }

现在我收到了错误:

this.button6.Click += new System.EventHandler(this.button6_Click);
  

错误3没有超载' button6_Click'匹配代表   ' System.EventHandler'

     

C:\ VisualC#\ Projects \ DataGridViewApplication \ DataGridViewApplication \ List.Designer.cs 340 35 DataGridViewApplication

现在我将按钮事件处理程序代码更改为

this.button6.Click += new System.DataGridViewCellEventHandler(this.button6_Click);

仍然收到此错误并停留在此处

  

错误3没有超载' button6_Click'匹配代表   ' System.EventHandler'

在此处找到解决方案: How to call a datagridview event with a click of a button?

private void button6_Click(object sender, EventArgs e)
        {
            ListDataGridView_CellDoubleClick(null, null);  
        }

但这不适合我,它给了我一个错误。

  

对象引用未设置为对象的实例。

3 个答案:

答案 0 :(得分:4)

    private void button6_Click(object sender, EventArgs e)
    {

        ListDataGridView_CellDoubleClick(this.ListDataGridView, new DataGridViewCellEventArgs(this.ListDataGridView.CurrentCell.ColumnIndex,this.ListDataGridView.CurrentRow.Index));

    }

答案 1 :(得分:0)

我希望你在Form.cs文件的顶部有这个:

using  System.Windows.Forms;

事件处理程序是强类型的,因此事件和处理程序都需要具有匹配类型。

Click事件处理程序需要void(object sender, EventArgs e)的方法签名,因此您的初始代码是正确的方法:

private void button6_Click(object sender, EventArgs e)
{
  // create and set values for the event argument. 
  // it can't be EventArgs, so just instantiate the right type
  // the constructor needs a row and column
  var datagridviewArgs = new DataGridViewCellEventArgs(42,13);
  ListDataGridView_CellDoubleClick(sender, datagridviewArgs);
}

但正如您所看到的,您需要在调用ListDataGridView_CellDoubleClick时为第二个参数DataGridViewCellEventArgs提供正确的类型。

答案 2 :(得分:0)

使用此...

private void btnChoose_Click(object sender, EventArgs e)
{

    MouseEventArgs b = new MouseEventArgs(System.Windows.Forms.MouseButtons.Left, 2, 
        MousePosition.X, MousePosition.Y, 0);
    DataGridViewCellMouseEventArgs a = new DataGridViewCellMouseEventArgs(0, 0, 
        MousePosition.X, MousePosition.Y, b);
    dataGridView1_CellMouseDoubleClick(sender, a);
}