vb.net中环境是WINFORM的前提下,实现按住Ctrl,用鼠标点击DataGrid实现多选功能?

FlutteringWings 2010-05-17 01:38:27
在vb.net中我的开发环境是WINFORM,现在要实现的功能是datagrid的多选功能,如何才能实现按住ctrl+Datagrid的行来实现Datagrid多行选择功能。
...全文
91 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
FlutteringWings 2010-05-19
  • 打赏
  • 举报
回复
大家伙帮帮忙啊~!刚进公司,不能叫白卷
FlutteringWings 2010-05-19
  • 打赏
  • 举报
回复
我的是vs2003的版本 在datagrid的属性里没有找到MultiSelect = True
flyerwing 2010-05-18
  • 打赏
  • 举报
回复
MultiSelect = True
多选属性搞上就可以开工了!
SHIFT也是可以用的哦!
cmy3918 2010-05-18
  • 打赏
  • 举报
回复
MultiSelect = True
jane_zhao 2010-05-17
  • 打赏
  • 举报
回复
将datagridview的MultiSelect = True就可以实现多选功能啊,
如果是多行选取的话,再将DataGridView的SelectionMode = DataGridViewSelectionMode.FullRowSelect。
cosmo_sei 2010-05-17
  • 打赏
  • 举报
回复
以下类派生自datagrid,可以实现用ctrl或shift多选,通过访问MultiSelectedIndex属性获得多选的行索引的集合


Public Class MultiLineDataGrid
Inherits System.Windows.Forms.DataGrid

Private m As New ArrayList

Public ReadOnly Property MultiSelectedIndex() As Integer()
Get
Return m.ToArray(GetType(Integer))
End Get
End Property

Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
Debug.WriteLine("DataGrid has hit")
Dim posdg As Point = New Point(e.X, e.Y)
Dim hitDG As DataGrid.HitTestInfo = HitTest(posdg)
If HitDataGrid(hitDG) Then
MyBase.OnMouseDown(e)
End If
End Sub

Private Function HitDataGrid(ByVal Hit As DataGrid.HitTestInfo) As Boolean
Try
Select Case Me.ModifierKeys
Case Keys.Control
If Hit.Row > -1 Then
If m.IndexOf(Hit.Row) > -1 Then
m.Remove(Hit.Row)
Me.UnSelect(Hit.Row)
Else
m.Add(Hit.Row)
Me.Select(Hit.Row)
End If
End If
Return False
Case Keys.Shift
If Hit.Row > -1 Then
For Each IndexOld As Integer In m
Me.UnSelect(IndexOld)
Next
m.Clear()
Dim i, intStep As Integer
If Hit.Row > Me.CurrentRowIndex Then
intStep = 1
Else
intStep = -1
End If
For i = Me.CurrentRowIndex To Hit.Row Step intStep
m.Add(i)
Me.Select(i)
Next
End If
Return False
Case Else
For Each index As Integer In m
Me.UnSelect(index)
Next
m.Clear()
If Hit.Type = DataGrid.HitTestType.RowHeader Then
m.Add(Hit.Row)
End If
Return True
End Select
Catch ex As Exception
Throw New Exception(ex.ToString)
End Try

End Function
End Class

Forrest23 2010-05-17
  • 打赏
  • 举报
回复

Private Sub DataGridView1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
If e.KeyData = Keys.Control Then
'按下ctrl键
End If
End Sub

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧