这种界面如何实现

ccbbcc 2018-10-27 10:30:25

我想实现上图所示界面。有人告诉我用listbox控件,可是我需要选中某一行就高亮显示,
不知道listbox行不行。还要左边文本框选中一行可以移到右边框里,
右边文本框选中一行可以移到左边文本框里。
高手给支个招,谢谢!
...全文
152 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2018-10-29
  • 打赏
  • 举报
回复
“全部移到右边”或者“全部移到左边”,超简单的啊。



比如左边的列表是 List1,右边的是 List2 。

方法一:
 你“打开窗口”时,开始不是要“全部数据添加到右边”吗!
 假设这个过程为“LoadData( )”,需要“加载对象”: LoadData(oDest As ListBox)
 这个过程中有语句:
 oDest.clear      (← 清空加载对项的数据)
 For . . . . . . . . . .    (← 用循环加载所有数据项)
 在“打开窗口”时要执行 Call LoadData(List2) (比如写在Form_Load( ) 事件中)。

全部移到左边,按钮事件代码就两句: List2.clear 和 Call LoadData(List1)
全部移到右边,按钮事件代码就两句: List1.clear 和 Call LoadData(List2)


方法二:
 仍然有一个“加载初始数据”的过程,假设这个过程为“LoadData( )”。
 跟方法一类似,但不用“加载对象”参数,过程中只操作 List2 。

全部移到右边,按钮事件代码就两句: List1.clear 和 Call LoadData( )
全部移到左边:
For i = 1 to List2.ListCount
List1.Add List2.List(0)
List2.remove 0
Next

上面的“代码”是直接在这儿敲入的,万一“属性”或方法名 输入有误,自己修正一下。
反正我表达的“意思”已经很清楚的了。
ccbbcc 2018-10-29
  • 打赏
  • 举报
回复

还有这个功能,点击上移按钮,listbox1控件高亮显示的行上移,
点击下移按钮,listbox1控件高亮显示的行下移。
ccbbcc 2018-10-29
  • 打赏
  • 举报
回复
谢谢!那么如何实现点击如下按钮

让左边的所有内容都移到右边去?
脆皮大雪糕 2018-10-29
  • 打赏
  • 举报
回复
之前的例子改一改,加一个combobox,于是combobox内容与list2保持同步。
全删全加的代码自己写个循环加,我就懒得写了

Option Explicit

Private Sub Form_Load()
Dim i As Integer
For i = 1 To 10
List1.AddItem "这是第" & i & "个选项"
Next

End Sub

Private Sub List1_DblClick()
List2.AddItem List1.List(List1.ListIndex)
Combo1.AddItem List1.List(List1.ListIndex)
List1.RemoveItem List1.ListIndex

End Sub

Private Sub List2_DblClick()
List1.AddItem List2.List(List2.ListIndex)
Combo1.RemoveItem List2.ListIndex
List2.RemoveItem List2.ListIndex
End Sub



脆皮大雪糕 2018-10-29
  • 打赏
  • 举报
回复
引用 6 楼 chenbingjy 的回复:
把listbox1里所有选项数据都显示在一个下拉框里,我是这么做的。
创建一个标签控件数组,在窗体上一共放15个标签控件。这样如果超过15个选项数据时就不行了。
所以我想还是动态创建一个控件数组。但不知如何实现,请高手告知。谢谢!


除了listbox 还有一个comboBox控件,一个是列表,一个是下拉组合框
ccbbcc 2018-10-29
  • 打赏
  • 举报
回复
谢谢举杯邀明月。你说的我明白了。现在已经可以Listbox1移动一个或者全部选项到Listbox2,
Listbox2移动一个或者全部选项到Listbox1.
现在还有一个问题,以上是一个界面,如1楼。
还有一个界面,如下图:

把listbox1里所有选项数据都显示在一个下拉框里,我是这么做的。
创建一个标签控件数组,在窗体上一共放15个标签控件。这样如果超过15个选项数据时就不行了。
所以我想还是动态创建一个控件数组。但不知如何实现,请高手告知。谢谢!
脆皮大雪糕 2018-10-27
  • 打赏
  • 举报
回复
简单实现:窗体放两个listbox ,启动后list1里生成若干选项。
双击list1中的项目,跑到list2中。双击list2的项目跑到list1中



Option Explicit

Private Sub Form_Load()
Dim i As Integer
For i = 1 To 10
List1.AddItem "这是第" & i & "个选项"
Next
End Sub

Private Sub List1_DblClick()
List2.AddItem List1.List(List1.ListIndex)
List1.RemoveItem List1.ListIndex
End Sub

Private Sub List2_DblClick()
List1.AddItem List2.List(List2.ListIndex)
List2.RemoveItem List2.ListIndex
End Sub


舉杯邀明月 2018-10-27
  • 打赏
  • 举报
回复
就是两个LitBox而已。

ListBox的“项目”,在选定后不都是“高亮的”吗!
这还用问……
即使控件没有焦点,它也是“高亮”的,很显眼。

不象ListView、TreeView那样,没有焦点时,它的“选定项”几乎看不出来。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧