设为首页
加入收藏
联系我们
ASP技术 PHP技术 CGI技术 JSP技术 .NET技术 建站技术 VB技术 C++技术 DELPHI技术 编程相关技术
 源码中国-技术中心 >> .NET技术 >> 数据库应用 >> .net datagrid 选择多行
字号:【 】 
.net datagrid 选择多行
http://edu.cn700.com (点击数: 时间:2005-4-2)
功能:点击datagrid并且按住键盘上的ctrl或shift可选择多行

Public Class MyDataGridCLASS
Inherits 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)
Debug.WriteLine("Mousedown has gogogo.....")
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
Debug.WriteLine(ex.ToString)
End Try
End Function
End Class


 上一篇文章:用DataGrid浏览数据
 下一篇文章:Sql 数据分页解决方案
姓 名:  1分 2分 3分 4分 5分
进入论坛 | 发表评论 | 查看评论 | 打印此文 | 关闭窗口 
 
 ▍最新文章
关于我们 | 版权声明 | 广告服务 | 帮助中心 | 联系我们 | 网站地图 | 发布源码 | 设为首页 |