vbscript

推荐列表 站点导航

当前位置:首页 > 脚本编程 > vbscript >

ListView的基本操作(新增、删除、全选、上移、下移)及热键操作

来源:网络整理  作者:网友投稿  发布时间:2020-12-27 20:56
新增我习惯写成一个子程序或函数,参数是数据内容,程序代码参考如下 Sub ListView1_AddNewItem(title As String, body As Stri...

新增
我习惯写成一个子程序或函数,参数是数据内容,程序代码参考如下

Sub ListView1_AddNewItem(title As String, body As String) Dim item As New ListViewItem item.Text = title item.SubItems.Add(body) ListView1.Items.Add(item) End Sub

删除
利用while循环去判断有没有选取,有选取的话就删除第一个的选取项目,如此就可以把所有选取的项目都删除

Sub ListView1_DeleteItems() '把所有选取的项目都删除 For i As Integer = ListView1.SelectedIndices.Count - 1 To 0 Step -1 ListView1.Items.RemoveAt(ListView1.SelectedIndices(i)) Next End Sub

全选
用for循环把所有项目的Selected 属性改成True即可

Sub ListView1_SelectAll() '全选 For Each item As ListViewItem In ListView1.Items item.Selected = True Next End Sub

上移
这跟ListBox的差别在于插入与删除的顺序,ListBox可以先Insert再RemoveAt,但是ListView在换位置的时候不能直接这样做,否则会出现错误

ListView的基本操作(新增、删除、全选、上移、下移)及热键操作


 

要解决这个问题可以加上Clone 方法,程序代码参考如下

Dim index As Integer = ListView1.SelectedIndices(0) Dim tmp As ListViewItem = ListView1.Items(index) ListView1.Items.Insert(index - 1, tmp.Clone()) ListView1.Items.RemoveAt(index + 1)

或是将Insert与RemoveAt的顺序颠倒,程序代码参考如下

Dim index As Integer = ListView1.SelectedIndices(0) Dim tmp As ListViewItem = ListView1.Items(index) ListView1.Items.RemoveAt(index) ListView1.Items.Insert(index - 1, tmp)

如果ListView要能MultiSelect,在做边界处理的时候就会遇到另一个棘手的问题,当全部的选取项目都集中在最上方(或最下方),会发生选取的项目开始彼此换位置,为了解决这个问题我又加了一个条件式(如果index-1被选取就不进行上移)去处理

Sub ListView1_MoveUp() '检查有没有选取项目 If ListView1.SelectedIndices.Count > 0 Then '用for循环由小到大去巡览 For i As Integer = 0 To ListView1.SelectedIndices.Count - 1 Dim index As Integer = ListView1.SelectedIndices(i) '如果index为第一项就不需要上移 If index > 0 Then '如果index-1被选取就不进行上移 If ListView1.SelectedIndices.Contains(index - 1) Then Continue For End If '进行换位置的动作 Dim tmp As ListViewItem = ListView1.Items(index) ListView1.Items.RemoveAt(index) ListView1.Items.Insert(index - 1, tmp) ListView1.Items(index - 1).Focused = True End If Next End If End Sub

下移
这跟上移的作法差不多,只是index的地方有些不同

Sub ListView1_MoveDown() '检查有没有选取项目 If ListView1.SelectedIndices.Count > 0 Then '用for循环由大到小去巡览 For i As Integer = ListView1.SelectedIndices.Count - 1 To 0 Step -1 Dim index As Integer = ListView1.SelectedIndices(i) '如果index为最后一项就不需要下移 If index < ListView1.Items.Count - 1 Then '如果index+1被选取就不进行下移 If ListView1.SelectedIndices.Contains(index + 1) Then Continue For End If '进行换位置的动作 Dim tmp As ListViewItem = ListView1.Items(index) ListView1.Items.RemoveAt(index) ListView1.Items.Insert(index + 1, tmp) ListView1.Items(index + 1).Focused = True End If Next End If End Sub

热键操作
在KeyDown事件中进行判断,范例中对应的按键与指令如表格,特别需要注意的是e.Handled = True,设定后就不会把按键继续送给操作系统处理


按键 指令
Delete   删除  
Ctrl + A   全选  
Ctrl + ↑   上移  
Ctrl + ↓   下移  
 

 





 

Private Sub ListView1_KeyDown(sender As Object, e As KeyEventArgs) Handles ListView1.KeyDown '热键操作 Select Case e.KeyCode Case Keys.Delete '删除 ListView1_DeleteItems() Case Keys.A '全选 If e.Control Then ListView1_SelectAll() End If Case Keys.Up '上移 If e.Control Then ListView1_MoveUp() e.Handled = True End If Case Keys.Down '下移 If e.Control Then ListView1_MoveDown() e.Handled = True End If End Select End Sub

工程源码:

 

ListView的基本操作(新增、删除、全选、上移、下移)及热键操作

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/vbscript/9829.shtml

最新文章
利用DataGridView举办增删改 利用DataGridView举办增删改

时间:2021-01-13

VB.NET简朴UDP联机措施 VB.NET简朴UDP联机措施

时间:2021-01-13

 obj.ScaleMode)/s phgt = obj.Sc obj.ScaleMode)/s phgt = obj.Sc

时间:2021-01-13

机房收费系统之报表(二 机房收费系统之报表(二

时间:2020-12-28

VB.NET TextBox设定第几行选取 VB.NET TextBox设定第几行选取

时间:2020-12-28

VB.NET 串口异步访问 VB.NET 串口异步访问

时间:2020-12-27

限制字符串输入 正则表达 限制字符串输入 正则表达

时间:2020-12-27

ListView的基本操作(新增、 ListView的基本操作(新增、

时间:2020-12-27

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

ListView的基本操作(新增、删除、全选、上移、下移)及热键操作

2020-12-27 编辑:网友投稿

新增
我习惯写成一个子程序或函数,参数是数据内容,程序代码参考如下

Sub ListView1_AddNewItem(title As String, body As String) Dim item As New ListViewItem item.Text = title item.SubItems.Add(body) ListView1.Items.Add(item) End Sub

删除
利用while循环去判断有没有选取,有选取的话就删除第一个的选取项目,如此就可以把所有选取的项目都删除

Sub ListView1_DeleteItems() '把所有选取的项目都删除 For i As Integer = ListView1.SelectedIndices.Count - 1 To 0 Step -1 ListView1.Items.RemoveAt(ListView1.SelectedIndices(i)) Next End Sub

全选
用for循环把所有项目的Selected 属性改成True即可

Sub ListView1_SelectAll() '全选 For Each item As ListViewItem In ListView1.Items item.Selected = True Next End Sub

上移
这跟ListBox的差别在于插入与删除的顺序,ListBox可以先Insert再RemoveAt,但是ListView在换位置的时候不能直接这样做,否则会出现错误

ListView的基本操作(新增、删除、全选、上移、下移)及热键操作


 

要解决这个问题可以加上Clone 方法,程序代码参考如下

Dim index As Integer = ListView1.SelectedIndices(0) Dim tmp As ListViewItem = ListView1.Items(index) ListView1.Items.Insert(index - 1, tmp.Clone()) ListView1.Items.RemoveAt(index + 1)

或是将Insert与RemoveAt的顺序颠倒,程序代码参考如下

Dim index As Integer = ListView1.SelectedIndices(0) Dim tmp As ListViewItem = ListView1.Items(index) ListView1.Items.RemoveAt(index) ListView1.Items.Insert(index - 1, tmp)

如果ListView要能MultiSelect,在做边界处理的时候就会遇到另一个棘手的问题,当全部的选取项目都集中在最上方(或最下方),会发生选取的项目开始彼此换位置,为了解决这个问题我又加了一个条件式(如果index-1被选取就不进行上移)去处理

Sub ListView1_MoveUp() '检查有没有选取项目 If ListView1.SelectedIndices.Count > 0 Then '用for循环由小到大去巡览 For i As Integer = 0 To ListView1.SelectedIndices.Count - 1 Dim index As Integer = ListView1.SelectedIndices(i) '如果index为第一项就不需要上移 If index > 0 Then '如果index-1被选取就不进行上移 If ListView1.SelectedIndices.Contains(index - 1) Then Continue For End If '进行换位置的动作 Dim tmp As ListViewItem = ListView1.Items(index) ListView1.Items.RemoveAt(index) ListView1.Items.Insert(index - 1, tmp) ListView1.Items(index - 1).Focused = True End If Next End If End Sub

下移
这跟上移的作法差不多,只是index的地方有些不同

Sub ListView1_MoveDown() '检查有没有选取项目 If ListView1.SelectedIndices.Count > 0 Then '用for循环由大到小去巡览 For i As Integer = ListView1.SelectedIndices.Count - 1 To 0 Step -1 Dim index As Integer = ListView1.SelectedIndices(i) '如果index为最后一项就不需要下移 If index < ListView1.Items.Count - 1 Then '如果index+1被选取就不进行下移 If ListView1.SelectedIndices.Contains(index + 1) Then Continue For End If '进行换位置的动作 Dim tmp As ListViewItem = ListView1.Items(index) ListView1.Items.RemoveAt(index) ListView1.Items.Insert(index + 1, tmp) ListView1.Items(index + 1).Focused = True End If Next End If End Sub

热键操作
在KeyDown事件中进行判断,范例中对应的按键与指令如表格,特别需要注意的是e.Handled = True,设定后就不会把按键继续送给操作系统处理


按键 指令
Delete   删除  
Ctrl + A   全选  
Ctrl + ↑   上移  
Ctrl + ↓   下移  
 

 





 

Private Sub ListView1_KeyDown(sender As Object, e As KeyEventArgs) Handles ListView1.KeyDown '热键操作 Select Case e.KeyCode Case Keys.Delete '删除 ListView1_DeleteItems() Case Keys.A '全选 If e.Control Then ListView1_SelectAll() End If Case Keys.Up '上移 If e.Control Then ListView1_MoveUp() e.Handled = True End If Case Keys.Down '下移 If e.Control Then ListView1_MoveDown() e.Handled = True End If End Select End Sub

工程源码:

 

ListView的基本操作(新增、删除、全选、上移、下移)及热键操作

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/vbscript/9829.shtml

相关文章

风云图片

推荐阅读

返回vbscript频道首页