用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 程序开发教程 > ASP.net教程 > Framework教程 > 文章正文
.net datagrid 选择多行
iTbulo.COM 2005-4-4 佚名()
功能:点击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


文章搜索
相关资讯
相关文章 相关下载
VB 从零开始编外挂(九)
VB 从零开始编外挂(八)
基于ASP.NET实现全球化
ASP.NET中使用IFRAME建立类Modal窗口
C# Builder 实现POP3信箱的监视
焦点信息