Vb.net 在DataGridView中手动触发按钮单击事件
我有一个Vb.net 在DataGridView中手动触发按钮单击事件,vb.net,datagridview,click,datagridviewbuttoncolumn,Vb.net,Datagridview,Click,Datagridviewbuttoncolumn,我有一个DataGridView包括一个DataGridView按钮列。用户应该能够直接使用按钮,因此我将EditMode设置为editonener。但是,第一次单击并没有触发click事件-似乎是第一次单击选择/聚焦了行/列 因此,我尝试使用CellClick事件: Private Sub dgv_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellClick Dim validClick
DataGridView
包括一个DataGridView按钮列
。用户应该能够直接使用按钮,因此我将EditMode
设置为editonener
。但是,第一次单击并没有触发click
事件-似乎是第一次单击选择/聚焦了行/列
因此,我尝试使用CellClick
事件:
Private Sub dgv_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellClick
Dim validClick = (e.RowIndex <> -1 And e.ColumnIndex <> -1)
If (TypeOf dgv.Columns(e.ColumnIndex) Is DataGridViewButtonColumn And validClick) Then
dgv.BeginEdit(True)
CType(dgv.EditingControl, Button).PerformClick()
End If
End Sub
Private子dgv_CellClick(发送者作为对象,e作为DataGridViewCellEventArgs)处理dgv.CellClick
Dim validClick=(e.RowIndex-1和e.ColumnIndex-1)
如果(dgv.Columns的类型(例如ColumnIndex)是DataGridViewButtonColumn和validClick),则
dgv.BeginEdit(真)
CType(dgv.EditingControl,按钮).PerformClick()
如果结束
端接头
但是这个解决方案也不起作用EditingControl
始终抛出NullReferenceException
有什么想法吗?我认为在单击
DataGridViewButtonColumn
单元格时,没有可以处理的特定事件。DataGridView
的Cell\u单击
和CellContentClicked
事件被触发
我无法获得一次点击DataGridView
的延迟,然后不得不再次点击以启动按钮。当我单击DataGridView
按钮单元格时,立即触发cell\u clicked
事件。更改DataGridView
的EditMode
没有任何区别。下面的代码简单地标识了从cell\u clicked
事件中单击的单元格。如果单击的单元格是一个按钮列(1或2),那么我调用一个创建的方法ButtonHandler
,以处理按下的按钮并继续使用正确的按钮方法。希望这有帮助
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
if (e.ColumnIndex == 1 || e.ColumnIndex == 2) {
// one of the button columns was clicked
ButtonHandler(sender, e);
}
}
private void ButtonHandler(object sender, DataGridViewCellEventArgs e) {
if (e.ColumnIndex == 1) {
MessageBox.Show("Column 1 button clicked at row: " + e.RowIndex + " Col: " + e.ColumnIndex + " clicked");
// call method to handle column 1 button clicked
// MethodToHandleCol1ButtonClicked(e.RowIndex);
}
else {
MessageBox.Show("Column 2 button clicked at row: " + e.RowIndex + " Col: " + e.ColumnIndex + " clicked");
// call method to handle column 2 button clicked
// MethodToHandleCol2ButtonClicked(e.RowIndex);
}
}
看看答案。这是一个c#问题,但答案转换为VB.NET,因此您应该能够从中选择位。谢谢,我看到了这个问题。问题不在于运行任何函数/方法/事件-问题在于,即使DataGridView EditMode是Editonner,第一次单击始终聚焦行,并且没有触发CellClick/CellContentClick事件。有什么解决办法吗?每当用户单击DataGridViewButtonColumn时,DataGridViewButtonColumn后面的代码就会触发。。。