单击DataGrid的单元格触发什么事件啊!

时间:2022-01-27 21:00:35
小弟做的程序要单击DataGrid的单元触发一段代码??
好象VB.net没有这事件!
请问如何实现..................

9 个解决方案

#1


MouseUp, for example, 参考

5.11 How can I select the entire row when the user clicks on a cell in the row?
http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q689q

#2


ItemCommand事件

如果命令(CommandName)是Update或Select或Edit或Cancel则会优先触发对应的UpdateCommand或SelectIndexChange或EditCommand或CancelCommand等事件.

#3


Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As _

System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseDown

        Dim myGrid As DataGrid = CType(sender, DataGrid)

        Dim hti As System.Windows.Forms.DataGrid.HitTestInfo

        hti = myGrid.HitTest(e.X, e.Y)

        Select Case hti.Type  '以下展示的是该类型枚举的全部内容

            Case System.Windows.Forms.DataGrid.HitTestType.None

                MsgBox("你单击的是背景")

            Case System.Windows.Forms.DataGrid.HitTestType.Cell

                MsgBox("你单击的单元格位于行:" & hti.Row & ",  列:" & hti.Column)

            Case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader

                MsgBox("你单击的是第" & hti.Column & "列的列头")

            Case System.Windows.Forms.DataGrid.HitTestType.RowHeader

                MsgBox("你单击的是第" & hti.Row & "行的行头")

            Case System.Windows.Forms.DataGrid.HitTestType.ColumnResize

                MsgBox("你单击的是第" & hti.Column & "列的边框")

            Case System.Windows.Forms.DataGrid.HitTestType.RowResize

                MsgBox("你单击的是第" & hti.Row & "行的边框")

            Case System.Windows.Forms.DataGrid.HitTestType.Caption

                MsgBox("你单击的是标题 ")

            Case System.Windows.Forms.DataGrid.HitTestType.ParentRows

                MsgBox("你单击的是父行 ")

        End Select

 End Sub

2. 双击事件(感谢acptvb网友的帮助)

在上面的单击事件中稍加修改,就可得到双击事件,只需要在sub里加入如下的判断语句:

    If e.Button = MouseButtons.Left And e.Clicks = 2 Then

Dim myGrid As DataGrid = CType(sender, DataGrid)

    …

End Select

End If

#4


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchTopQuestionsAboutASPNETDataGridServerControl.asp

#5


使用cell事件...

#6


单击除了DataGrid本身取得你的事件外,Datagrid 中的cell也会取得你的事件.是CellEnter事件.

#7


Datagrid的Cell是一个TextBox,所以是TextBox的Enter事件.

#8


测试了一下,chenyu001(三步一水,淹掉水园) 兄的代码真的是不错,
佩服,
不过,感觉HitTestType和 textBox的ENTER 事件有明显的不同,
HitTestType好象做得会比较细,


觉得楼主需要的应该是HitTestType的代码,

#9


用个笨方法,作成模板列,加一个button,修改一下样式,让其看起来和没有一样,然后当点击按钮时就和点击单元格没有什么区别了,这只是个高手从不用的招,实在不行你也可以试一试!

#1


MouseUp, for example, 参考

5.11 How can I select the entire row when the user clicks on a cell in the row?
http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q689q

#2


ItemCommand事件

如果命令(CommandName)是Update或Select或Edit或Cancel则会优先触发对应的UpdateCommand或SelectIndexChange或EditCommand或CancelCommand等事件.

#3


Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As _

System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseDown

        Dim myGrid As DataGrid = CType(sender, DataGrid)

        Dim hti As System.Windows.Forms.DataGrid.HitTestInfo

        hti = myGrid.HitTest(e.X, e.Y)

        Select Case hti.Type  '以下展示的是该类型枚举的全部内容

            Case System.Windows.Forms.DataGrid.HitTestType.None

                MsgBox("你单击的是背景")

            Case System.Windows.Forms.DataGrid.HitTestType.Cell

                MsgBox("你单击的单元格位于行:" & hti.Row & ",  列:" & hti.Column)

            Case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader

                MsgBox("你单击的是第" & hti.Column & "列的列头")

            Case System.Windows.Forms.DataGrid.HitTestType.RowHeader

                MsgBox("你单击的是第" & hti.Row & "行的行头")

            Case System.Windows.Forms.DataGrid.HitTestType.ColumnResize

                MsgBox("你单击的是第" & hti.Column & "列的边框")

            Case System.Windows.Forms.DataGrid.HitTestType.RowResize

                MsgBox("你单击的是第" & hti.Row & "行的边框")

            Case System.Windows.Forms.DataGrid.HitTestType.Caption

                MsgBox("你单击的是标题 ")

            Case System.Windows.Forms.DataGrid.HitTestType.ParentRows

                MsgBox("你单击的是父行 ")

        End Select

 End Sub

2. 双击事件(感谢acptvb网友的帮助)

在上面的单击事件中稍加修改,就可得到双击事件,只需要在sub里加入如下的判断语句:

    If e.Button = MouseButtons.Left And e.Clicks = 2 Then

Dim myGrid As DataGrid = CType(sender, DataGrid)

    …

End Select

End If

#4


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchTopQuestionsAboutASPNETDataGridServerControl.asp

#5


使用cell事件...

#6


单击除了DataGrid本身取得你的事件外,Datagrid 中的cell也会取得你的事件.是CellEnter事件.

#7


Datagrid的Cell是一个TextBox,所以是TextBox的Enter事件.

#8


测试了一下,chenyu001(三步一水,淹掉水园) 兄的代码真的是不错,
佩服,
不过,感觉HitTestType和 textBox的ENTER 事件有明显的不同,
HitTestType好象做得会比较细,


觉得楼主需要的应该是HitTestType的代码,

#9


用个笨方法,作成模板列,加一个button,修改一下样式,让其看起来和没有一样,然后当点击按钮时就和点击单元格没有什么区别了,这只是个高手从不用的招,实在不行你也可以试一试!