Vb.net 如何查找不同类型的datagridviewcell或datagridviewcolumn(运行时创建的)
(对不起,英语太差了)Vb.net 如何查找不同类型的datagridviewcell或datagridviewcolumn(运行时创建的),vb.net,datagridviewcolumn,Vb.net,Datagridviewcolumn,(对不起,英语太差了) 我和你一起工作- 窗口应用程序,VB,VS 2012,.net F/W-4.5 我在表单中有一个DGV(datagridview) dgv中有不同类型的列是在运行时创建的 要执行流程的下一步,首先我必须确定单击了哪种类型的单元格/列(如dgv组合框、dgv文本框等) 代码在这里,这对我不起作用,所以我尝试使用MsgBox检查单击的dgv单元格的类型 Private Sub dgv_EditingControlShowing(sender As Object, e
我和你一起工作- 窗口应用程序,VB,VS 2012,.net F/W-4.5
我在表单中有一个DGV(datagridview)
dgv中有不同类型的列是在运行时创建的
要执行流程的下一步,首先我必须确定单击了哪种类型的单元格/列(如dgv组合框、dgv文本框等)
代码在这里,这对我不起作用,所以我尝试使用MsgBox检查单击的dgv单元格的类型
Private Sub dgv_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgv.EditingControlShowing
Dim column_type As Object
column_type = dgv.Columns(dgv.SelectedCells(0).ColumnIndex).CellType
column_type.GetType()
If TypeOf column_type Is DataGridViewComboBoxCell Then
'code goes here
MsgBox("yes")
Else
'code goes here
MsgBox(column_type.ToString)
End If
End Sub
但问题是,控件始终进入if…else语句的else部分,并且MsgBox(column_type.ToString)
为所有类型的列显示,这些列是System.Windows.Forms.DataGridViewTextBoxCell或System.Windows.Forms.DataGridViewComboxCell
我尝试使用
检查列类型
DataGridViewComboBoxCell,
DataGridViewComboxColumn,
DataGridViewComboxEditingControl-但没有任何功能
我不确定,但我认为问题在于Dim column\u type As Object
请帮帮我,伙计们。提前感谢。如果您还没有打开选项Strict on(项目属性>编译)
对我来说很好
备选方案:
If DataGridView1.Columns(0).GetType Is GetType(DataGridViewTextBoxColumn) Then
MsgBox("yes")
End If
您当前正在对类型的类型进行比较。
如果由于某种原因无法工作,则应使用断点检查代码。如果尚未启用Option Strict on(项目属性>编译)
对我来说很好
备选方案:
If DataGridView1.Columns(0).GetType Is GetType(DataGridViewTextBoxColumn) Then
MsgBox("yes")
End If
您当前正在对类型的类型进行比较。
如果由于某种原因无法工作,则应使用断点检查代码。列类型的代码TypeOf column\u type
是冗余的,因为列类型实际上是一种类型!当你把它分配给一个对象时,这有点错误。您可以将其指定为一个类型。但更简单的方法是让编译器替您思考,并使用隐式类型
Private Sub dgv_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgv.EditingControlShowing
' cursor on Dim, it is Type
Dim column_type = dgv.Columns(dgv.SelectedCells(0).ColumnIndex).CellType
' the proper syntax is Type is GetType(Type)
If column_type Is GetType(System.Windows.Forms.DataGridViewComboBoxCell) Then
MsgBox("yes")
Else
MsgBox(column_type.ToString)
End If
End Sub
语法是如果Type是GetType(Type),那么
请参见列类型的代码类型
是多余的,因为列类型实际上是一种类型!当你把它分配给一个对象时,这有点错误。您可以将其指定为一个类型。但更简单的方法是让编译器替您思考,并使用隐式类型
Private Sub dgv_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgv.EditingControlShowing
' cursor on Dim, it is Type
Dim column_type = dgv.Columns(dgv.SelectedCells(0).ColumnIndex).CellType
' the proper syntax is Type is GetType(Type)
If column_type Is GetType(System.Windows.Forms.DataGridViewComboBoxCell) Then
MsgBox("yes")
Else
MsgBox(column_type.ToString)
End If
End Sub
语法是如果Type是GetType(Type),那么
看