列表框的示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表框的示例相关的知识,希望对你有一定的参考价值。

参考技术A

列表框的特点是:列表框中的项目是通过程序插入到其中的,用户无法向清单中输入数据,当选择其中的项目,并在用户单击一个按钮或者执行某个操作时,由应用程序完成对指定项目的具体操作。下面这个例子充分说明了列表框的这个特点,并介绍了列表框(ListBox)的常用属性。
为了学习方便,提供的源码已经作了详细的中文注释,看看源码框中的代码:
Option Explicit
' 简单的列表框ListBox的例子
'------名称-------------作用------------
' List1、List2 列表框
' LefttoRightCmd 移动所选项目到另一个列表框(左到右)
' RighttoLeftCmd 移动所选项目到另一个列表框(右到左)
' LefttoRightCmd 移动所选项目到另一个列表框(左到右)
' RighttoLeftCmd 移动所选项目到另一个列表框(右到左)
' List1.deleteString 删除列表框List1中所选项目
' List2.deleteString 删除列表框List2中所选项目
' List1.AddString 给列表框List1增加新项目
' List2.AddString给列表框List2增加新项目
' List1.ResetContent清空列表框List1
' List2.ResetContent 清空列表框List2
'————名称————属性设置———
' List1列表框 Sorted属性设为“False”
' List2列表框 Sorted属性设为“True”
' MultiSelect属性设置为2
' 即List2控件中的项目总是排序的
'--------------------------------------
Private Sub Form_Load()
'装载窗体时,给列表中的元素赋值
List1.AddItem “China”
List1.AddItem “America”
List1.AddItem “Japan”
List2.AddItem “Soccer”
List2.AddItem “Tennis”
List2.AddItem “Basketball”
End Sub
Private Sub LefttoRightCmd_Click()
'将左边列表中所选元素移动到右边列表中
If List1.ListIndex >;= 0 Then
'在右边列表中增加新元素
List2.AddItem List1.Text
'删除左边列表中的所选元素
List1.RemoveItem List1.ListIndex
End If
End Sub
Private Sub List1AddCmd_Click()
Dim ListItem As String
'
ListItem = InputBox(“在列表中输入新项目”)
'向列表中加入新项目
If Trim(ListItem) <;>; ““ Then
'Trim()作用是清除ListItem字符串内的空格
List1.AddItem ListItem
End If
End Sub
Private Sub List1ClearCmd_Click()
'清空列表
List1.Clear
End Sub
Private Sub List1MoveCmd_Click()
Dim i As Integer
'判断列表框是否只有一个项目被选中
If List1.SelCount = 1 Then
List1.RemoveItem List1.ListIndex
ElseIf List1.ListCount >; 1 Then
'删除列表框中的所选中的多个项目
For i = List1.ListCount - 1 To 0 Step -1
'ListCount返回列表框中的项目总数
'ListCount-1是列表框中最后一个项目的索引号
'判断该项目是否被选中,Selected()返回布尔值
If List1.Selected(i) Then
'删除索引号为i的项目
List1.RemoveItem i
End If
Next
End If
End Sub
Private Sub List2AddCmd_Click()
'定义变量,以接收输入的字符串
Dim ListItem As String
ListItem = InputBox(”在列表中输入新项目“)
If Trim(ListItem) <;>; ““ Then
'将字符串增加到列表中
List2.AddItem ListItem
End If
End Sub
Private Sub List2ClearCmd_Click()
'清空列表
List2.Clear
End Sub
Private Sub List2MoveCmd_Click()
Dim i As Integer
'判断所选 元素是否只有一个
If List2.SelCount = 1 Then
List2.RemoveItem List2.ListIndex
'如果所选 元素大于1,则按下列操作进行
ElseIf List2.ListCount >; 1 Then
For i = List2.ListCount - 1 To 0 Step -1
If List2.Selected(i) Then
List2.RemoveItem i
End If
Next i
End If
End Sub
Private Sub RighttoLeftCmd_Click()
Dim i As Integer
'判断选中的元素有几个
If List2.SelCount = 1 Then
List1.AddItem List2.Text
List2.RemoveItem List2.ListIndex
'当选中的元素大于一个时
ElseIf List2.SelCount >; 1 Then
For i = List2.ListCount - 1 To 0 Step -1
'如果该元素被选中,则将其从右边移至左边
If List2.Selected(i) Then
List1.AddItem List2.List(i)
List2.RemoveItem i
End If
Next i
End If
End Sub
这个例子包含一个窗体,窗体中有两个列表框(List1、List2)和八个按钮,界面如下:
(图)窗体(FormListBox)
我们首先新建一个标准的EXE工程,添加一个窗体,并把列表框和按钮控件添加到窗体上。各按钮控件的名称如下表:
按钮名称  名称属性  按钮名称  名称属性
删除所选项目(左) List1movecmd  删除所选项目(右) List2movecmd
增加新项目(左)  List1addcmd  增加新项目(右)  List2addcmd
清除弄表(左)  List1clearcmd  清除列表(右)  List2clearcmd
右箭头   lefttorightcmd  左箭头  Righttoleftcmd
' List1列表框 Sorted属性设为“False” ' List2列表框 Sorted属性设为“True” ' MultiSelect属性设置为2 ' 即List2控件中的项目总是排序的
在属性窗口中,将List1列表框 Sorted属性设为“False”;List2列表框 Sorted属性设为“True”,MultiSelect属性设置为2,即List2控件中的项目总是排序的。
下一步我们为各控件添加相应的程序。
其中:
List1.AddItem “China” 是将“China”添加到列表框中。
List1.ListIndex 返回的是列表框List1中当前选择项目的索引号码。
List1.ListCount 返回的是列表框List1中项目总数。
List1.ListCount - 1 返回列表框List1中最后一个项目的索引号。
List1.Selected() 返回的是一个项目的选择状态,返回的是布尔值。
代码写好之后,我们就可以保存工程,然后按“Ctrl+F5”键,测试检验一下我们的程序了。在这个小程序中,包含了列表框中的一般常用属性和方法。

实现动态/级联列表框的最佳方法[关闭]

【中文标题】实现动态/级联列表框的最佳方法[关闭]【英文标题】:Best way to implement dynamic/cascading ListBoxes [closed] 【发布时间】:2021-09-14 01:12:10 【问题描述】:

我目前正在努力解决如何最好地在我的应用程序中设置动态/级联列表框。我有一个分层表,我希望用户能够从***别进行选择,并且根据用户更高级别的选择更新较低级别的列表框。

我正在使用 C# 开发 WPF/MVVM 应用程序

示例数据:

Z000 Z100 Z200 Z300
A000 A100 A110 A111
A000 A100 A110 A112
A000 A200 A210 A211
A000 A200 A210 A212
A000 A300 A310 A311
A000 A300 A320 A321
B000 B100 B110 B111
B000 B100 B110 B112
B000 B200 B210 B211
B000 B200 B220 B222
C000 C100 C110 C111
C000 C100 C110 C112
C000 C100 C120 C121
C000 C200 C210 C211

当应用程序加载时,它应该显示四个列表框,每个列表框显示 Z000、Z100、Z200、Z300 的不同值。

无论层次结构如何,用户都可以从任何列表框中选择一个选项。

例如。如果用户从第二个列表框 (Z100) 项 [A200] 中进行选择,则所有下部列表框应更新以在 A200 下为 Z200[A210] 和 Z300[ 显示不同的值A211, A212] 不应该影响更高级别的列表框(Z000)

抱歉,我很难以书面形式描述这种情况。

【问题讨论】:

【参考方案1】:

我发现级联 ListBox 的想法非常有趣。所以我创建了一个项目来实现它。请查看我的 GitHub repo。这是一些屏幕截图。希望我正确理解要求。

【讨论】:

非常感谢您的努力。您的解决方案澄清了我正在努力解决的一些问题。我很难弄清楚如何刷新较低级别的项目而不影响较高级别的项目,而且我所有的尝试都过于复杂。子列表框和层次结构很棒。再次感谢!

以上是关于列表框的示例的主要内容,如果未能解决你的问题,请参考以下文章

列表中的几个字典到数据框的列

在带有文本框的列表框中,如何关注添加的文本框?

实现动态/级联列表框的最佳方法[关闭]

VB中可通过列表框的啥来取得列表框中被选中的选项?

选择时如何让wpf listboxitem拉伸列表框的整个高度

VB列表框属性的问题