2016-08-15 52 views
1

即时通讯开发一个使用vb.net的系统,我对datagridview函数有一些疑问。是否有可能在gridview中,当我点击rowheader功能,它不会执行它的单元格输入功能?单击或执行一个功能/事件时避免一些功能/事件运行

因为我的问题是在我的单元格输入事件/功能有一个代码,如果用户输入第一个单元格将显示一些文本框。我希望当我点击我的网格视图的行标题这个单元格输入事件/功能将不会执行。有可能吗?给我一些关于如何去做的提示或技巧。

我也做过尝试这样

私人子gridview_RowHeaderMouseClick。 。 。 textbox.visible =假 gridview.endEdit(真) 端子

结果是好的,但它是不好的客户视图,我想更多的改进。

这是我的代码。

Private Sub dgCharges_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgCharges.CellEnter 
if e.ColumnIdex >= 0 Then 
    if e.ColumnIndex = 5 Then 
     'Show Textbox. 
    End If 
End if 
End Sub 

Private Sub dgCharges_RowHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgCharges.RowHeaderMouseClick 
'Textbox.visible = false //this line i've use to hide the textbox when user 
clicked row header. 
dgCharges.EndEdit(True) 
End Sub 

回答

1

只要把在CellEnter功能的测试,如果该列指数> = 0头包含索引-1

Private Sub DataGridView1_CellEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter 
    If e.ColumnIndex >= 0 Then 
     'Do my stuff 
    End If 
End Sub 

仅执行的代码的限制部分----- - 编辑----

要防止datagridview单元编辑器弹出,只需将列设置为只读。或者更多的控制使用

Private Sub DataGridView1_CellBeginEdit(sender As System.Object, e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridViewMsg.CellBeginEdit 
    'Test your criteria 
    If shouldBeReadonly Then 
     e.Cancel = True 
    End If 
End Sub 
+0

我试过这段代码,但仍然无法正常工作。行标题仍在执行单元格输入事件/功能。也许这是因为rowheader的影响?当我点击rowheader事件整个行被选中,但这是行标题的defualt功能。如果在我的cellenter事件中,我也有两个。第一个是你给我的,第二个是特定的索引clicke。这是第一个单元格的索引 – Muj

+0

发布您的事件处理程序代码 – FloatingKiwi

+0

只需将其作为对您问题的编辑发布即可。 – FloatingKiwi