注册 登录
编程论坛 VB6论坛

vb combobox 中的selectedindexchanged 事件

jualian 发布于 2013-01-28 10:02, 904 次点击
  combobox再触发selectedindexchanged 事件时,判断messagebox的结果,当选择yes时,才改变selectedindex
9 回复
#2
yz10252013-01-28 17:41
我vb6 combobox 中没 selectedindexchanged 事件
你是哪版的VB?
#3
seafish0112013-01-28 18:55
If Msgbox("是否继续?",36,"Information")=vbyes then
...
End if
用手机回复的,应该没输错。
#4
SeayuFavor2013-01-31 16:53
您好,
完整演示代码如下(附源码文件):

程序代码:
Option Explicit

' 是否第一次改变.
Dim blnFirstChanged             As Boolean
' 是否跳过单击事件.
Dim blnJumpClickEvent           As Boolean
' ComboBox 下拉列表改变之前的索引号.
Dim intListIndexBeforeChanging  As Integer

Private Sub Combo1_Click()
    ' /* 如果第一次改变. */
    If blnFirstChanged Then
        blnFirstChanged = False
        Exit Sub
    Else
        If blnJumpClickEvent Then
            blnJumpClickEvent = False
            Exit Sub
        Else
            If MsgBox("是否改变下拉列表框的索引?", vbQuestion + vbYesNo) = vbNo Then
                blnJumpClickEvent = True
                Combo1.ListIndex = intListIndexBeforeChanging
            Else
                ' 改变后的下拉列表索引号就是下一次改变之前的索引号.
                intListIndexBeforeChanging = Combo1.ListIndex
            End If
        End If
    End If
End Sub

Private Sub Form_Load()
    ' /* 添加测试数据. */
    With Combo1
        .AddItem "MBC"
        .AddItem "KBS"
        .AddItem "SBS"
        .AddItem "TJB"
        ' 防止第一次改变时触发 ComboBox 的 Click 事件.
        blnFirstChanged = True
        .ListIndex = 0
        intListIndexBeforeChanging = .ListIndex
        blnJumpClickEvent = False
    End With
End Sub

只有本站会员才能查看附件,请 登录


PS: ComboBox 没有 SelectedIndexChange 这个事件的,这里可以通过 Click 事件取而代之。

[ 本帖最后由 SeayuFavor 于 2013-1-31 16:56 编辑 ]
#5
yz10252013-02-01 09:18
所以意思是~你要自订个ComboBox控件~让它加入SelectedIndexChange事件~而该事件是藉由去Click实现的意思吗?
#6
SeayuFavor2013-02-01 19:00
回复 5楼 yz1025
长话短说,自定义事件的声明需要放在类模块中,比如你所说的 SelectIndexChange 可以这样声明:
Public Event SelectIndexChange(Byval Index As Integer)

然后触发该事件需要使用 RaiseEvent SelectIndexChange(Index)

实例化类模块时需要使用 WithEvents 关键字,并且只能在类模块、窗体模块以及其它定义类的模块中声明。

也就是说,需要重新封装 ComboBox 控件。
#7
SeayuFavor2013-02-01 19:03
回复 5楼 yz1025
长话短说,自定义事件的声明需要放在类模块中,比如你所说的 SelectIndexChange 可以这样声明:
Public Event SelectIndexChange(Byval Index As Integer)

然后触发该事件需要使用 RaiseEvent SelectIndexChange(Index)
实例化类模块时需要使用 WithEvents 关键字,并且只能在类模块、窗体模块以及其它定义类的模块中声明。
也就是说,需要重新封装 ComboBox 控件,上述代码只能理解为实现了一个类似于 SelectIndexChange 事件效果的一个功能。
#8
wube2013-02-04 04:51
正如所料~就是新增事件而已~
關鍵點在於用法~你這麼完整一說~
代碼就出來了~改明兒再貼出來~半夜了~
#9
yz10252013-02-04 11:56
回复 7楼 SeayuFavor
人家短短写一行~你就能参透出这么多~
不亏是得道高僧~话说一行文一般都是灌水用的~
#10
yz10252013-02-04 11:58
那改天我也可以开个马甲~上来问问~
文本框的AAA事件要怎实现~应该也会有人能参透吧~
1