更改所选行的DataGridView不会触发单元格单击事件

时间:2013-11-22 13:48:58

标签: c# datagridview

C#Winforms

更改选择时,不会触发点击事件。

private void ChangeSelection(rowIndex){
    dataGridView.Rows[rowIndex].Selected = true;    
}

我可以称之为调用普通函数,如下所示。

dataGridView_Click(new object(), new System.EventArgs());

Designer.cs:
this.dataGridView.Click += new System.EventHandler(dataGridView_Click);

这里重要的一点是,这个click事件与Native C ++ Classes在接收器中。

Sink Windows Forms Events from Native C++ Classes

我的问题是,当我像普通函数一样调用它时,它不会被本机应用程序命中。 我需要以编程方式触发此单击,就像用户用鼠标单击它一样。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Reflection通过Click举起OnClick活动,因为此提升方法受到保护:

typeof(Control).GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance)
               .Invoke(dataGridView1, new object[]{EventArgs.Empty});

BindingFlags的完整类型名称为System.Reflection.BindingFlags

答案 1 :(得分:0)

您还可以为选择更改的事件调用单元格点击事件

private void dgv_SelectionChanged(object sender, EventArgs e){
     DataGridView dv = (DataGridView)sender;
     dgv_CellClick(dv, new DataGridViewCellEventArgs(dv.CurrentCell.ColumnIndex, dv.CurrentCell.RowIndex));}        

private void dgv_CellClick(object sender,DataGridViewCellEventArgs e){//你的东西听到了! }