例子。列表框中的 0 不不能选中的。Dim lastindex As LongPrivate Sub Form_Load() Dim i As IntegerFor i = 0 To 10 List1.AddItem i List1.ItemData(List1.NewIndex) = i Next i For i = 0 To 10 List1.AddItem i List1.ItemData(List1.NewIndex) = i Next ilastindex = -1 End SubPrivate Sub List1_Click() On Error Resume Next If List1.ItemData(List1.ListIndex) = 0 Then List1.ListIndex = lastindex Else lastindex = List1.ListIndex End If End Sub
不太明白你的,只要对一个命令按钮编写个简单的事件过程就行了啊 private sub cmdAdd_Click() if ListBox1.List(ListBox1.ListIndex) = "指定项目" then exit sub end if ListBox2.AddItem ListBox1.List(ListBox1.ListIndex) end sub 这样就能把ListBox1 中的项目移到 ListBox2 中了啊
用树型结果不是更好一点。或者combox和listbox配合使用。
1.把数据分类插入列表中
2.将查到的一部分数据(限制一下条件)放到一个临时表,然后向临时表添加另一部分数据,最后读取这个临时表
3.用union语句
不太明白,有那么复杂吗,我就是通过手工添加的方式实现 ListBox.AddItem " " ,然后将左边的Item选到右边的ListBox中,但在添加时要进行分类,在每类上面增加一个类标题(类标题不能被选)
你添加的时候
在ListBox.AddItem " "后面用
ListBox.ItemData 方法来标注一下添加的内容,只有主题的添加。
当你要选择的时候按条件判断一下(比如,itemdata是否为空或者为某个指定的字符)
加主题不是问题。问题在于你所说的不能被选是指什么。如果说选了不生效,那很简单。你只要将相应项的 ItemData 属性设置为特殊的值,处理时判断一下就是了。
貌似没有ListBox.ItemData 方法 ,应该是ListIndex属性,不过还是非常感谢,问题已基本解决!
Dim i As IntegerFor i = 0 To 10
List1.AddItem i
List1.ItemData(List1.NewIndex) = i
Next i
For i = 0 To 10
List1.AddItem i
List1.ItemData(List1.NewIndex) = i
Next ilastindex = -1
End SubPrivate Sub List1_Click()
On Error Resume Next
If List1.ItemData(List1.ListIndex) = 0 Then
List1.ListIndex = lastindex
Else
lastindex = List1.ListIndex
End If
End Sub
不太明白你的,只要对一个命令按钮编写个简单的事件过程就行了啊
private sub cmdAdd_Click()
if ListBox1.List(ListBox1.ListIndex) = "指定项目" then
exit sub
end if
ListBox2.AddItem ListBox1.List(ListBox1.ListIndex)
end sub
这样就能把ListBox1 中的项目移到 ListBox2 中了啊
移到什么地方是另外一回事。写成硬代码当然可以。只是不好更新而已。如果你是从数据库填充列表项的,无论将来数据如何变化,只要你规定的 ItemData 编码规则不变,你的代码都是适应的。而且用户可以看到不能选中的效果。你的做法,可以达到需求。但要用户点击了按钮之后,才知道不可以这样。这种“用户陷阱”越少越好。
不过感觉你说的很有道理,听了后受益匪浅拉,谢谢各位了!!