列表框的示例
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。这是一些屏幕截图。希望我正确理解要求。
【讨论】:
非常感谢您的努力。您的解决方案澄清了我正在努力解决的一些问题。我很难弄清楚如何刷新较低级别的项目而不影响较高级别的项目,而且我所有的尝试都过于复杂。子列表框和层次结构很棒。再次感谢!以上是关于列表框的示例的主要内容,如果未能解决你的问题,请参考以下文章