| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 888 人关注过本帖
标题:vb combobox 中的selectedindexchanged 事件
只看楼主 加入收藏
jualian
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-1-24
结帖率:100%
收藏
 问题点数:0 回复次数:9 
vb combobox 中的selectedindexchanged 事件
  combobox再触发selectedindexchanged 事件时,判断messagebox的结果,当选择yes时,才改变selectedindex
2013-01-28 10:02
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
我vb6 combobox 中没 selectedindexchanged 事件
你是哪版的VB?

不要投我
2013-01-28 17:41
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
收藏
得分:0 
If Msgbox("是否继续?",36,"Information")=vbyes then
...
End if
用手机回复的,应该没输错。
2013-01-28 18:55
SeayuFavor
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2011-8-19
收藏
得分:0 
您好,
完整演示代码如下(附源码文件):

程序代码:
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

ComboBoxDemo.zip (2.29 KB)


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

[ 本帖最后由 SeayuFavor 于 2013-1-31 16:56 编辑 ]
2013-01-31 16:53
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
所以意思是~你要自订个ComboBox控件~让它加入SelectedIndexChange事件~而该事件是藉由去Click实现的意思吗?

不要投我
2013-02-01 09:18
SeayuFavor
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2011-8-19
收藏
得分:0 
回复 5楼 yz1025
长话短说,自定义事件的声明需要放在类模块中,比如你所说的 SelectIndexChange 可以这样声明:
Public Event SelectIndexChange(Byval Index As Integer)

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

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

也就是说,需要重新封装 ComboBox 控件。
2013-02-01 19:00
SeayuFavor
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2011-8-19
收藏
得分:0 
回复 5楼 yz1025
长话短说,自定义事件的声明需要放在类模块中,比如你所说的 SelectIndexChange 可以这样声明:
Public Event SelectIndexChange(Byval Index As Integer)

然后触发该事件需要使用 RaiseEvent SelectIndexChange(Index)
实例化类模块时需要使用 WithEvents 关键字,并且只能在类模块、窗体模块以及其它定义类的模块中声明。
也就是说,需要重新封装 ComboBox 控件,上述代码只能理解为实现了一个类似于 SelectIndexChange 事件效果的一个功能。
2013-02-01 19:03
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
正如所料~就是新增事件而已~
關鍵點在於用法~你這麼完整一說~
代碼就出來了~改明兒再貼出來~半夜了~

不要選我當版主
2013-02-04 04:51
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
回复 7楼 SeayuFavor
人家短短写一行~你就能参透出这么多~
不亏是得道高僧~话说一行文一般都是灌水用的~

不要投我
2013-02-04 11:56
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
那改天我也可以开个马甲~上来问问~
文本框的AAA事件要怎实现~应该也会有人能参透吧~

不要投我
2013-02-04 11:58
快速回复:vb combobox 中的selectedindexchanged 事件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021589 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved