首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

问个关于vb6中combo控件删除列表项的有关问题

2013-01-06 
问个关于vb6中combo控件删除列表项的问题现在我正在弄一个程序,通过从text控件中输入不同的数据来使到该窗

问个关于vb6中combo控件删除列表项的问题
现在我正在弄一个程序,通过从text控件中输入不同的数据来使到该窗口的其中一个combo控件的列表项的增删。另外,我把text控件中输入的内容通过一个静态sub子过程保存到一个数组中,然后每次输入时都需要判断输入的内容,只要有一次输入不满足指定的条件,就删除指定的列表项,满足指定的条件就增加另外一些指定的列表项。但是,通过不停的增删,指定的列表项所在的位置并不确定,那要如何删除这些列表项?
[解决办法]
index不是由程序员管理的,而是由控件管理的,因此你不要也没必要去理解它是怎样生成的(事实上还会受到排序方法影响),你应该关心用什么来确定(标识)你的项目,比如用文本(假设文本不重复),再根据文本找到index,从而删除,示例:


Private Sub RemoveItemFromText(txt As String) '根据列表文本删除项目
Dim c As Integer, i As Integer
c = Combo1.ListCount    '列表项数,Combo1是Combo控件
i = 0
While i < c And Combo1.List(i) <> txt   '根据文本找到项目的index
    i = i + 1
Wend
If i >= c Then   '如果没找到
    Debug.Print "未找到项目!"
Else
    Combo1.RemoveItem i  '移除项目
End If
End Sub



[解决办法]
引用:
现在如果我把index参数为1、3的项目删除,那原本是index参数为2、4、5的index参数是否会自动上移变成1,2,3?
如果向一个没有列表项的combo中插入列表项的index参数,如0、1、2、5,那在插入index参数为3、4的项目之前,那index参数为5的内容是不是会自动上升到index参数为3的位置上去


删除列表项之后,其后面的列表项 Index 会递减。
插入列表项到指定 Index 时,原相同 Index 及以后列表项的 Index 会递增。

其实没有关系,完全可以动态管理。你可以用以下 API 查找相同的项,返回值就是它的 Index:

Private Declare Function SendMessagebyString Lib _
"user32" Alias "SendMessageA" (ByVal hWND As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As String) As Long

Private Const LB_FINDSTRINGEXACT = &H1A2    '在 ListBox 中精确查找
Private Const CB_FINDSTRINGEXACT = &H158    '在 ComboBox 中精确查找
Private Const LB_FINDSTRING = &H18F         '在 ListBox 中模糊查找
Private Const CB_FINDSTRING = &H14C         '在 ComboBox 中模糊查找

热点排行