Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何查找不同类型的datagridviewcell或datagridviewcolumn(运行时创建的)_Vb.net_Datagridviewcolumn - Fatal编程技术网

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),那么