现在添加了2个COMBO。类型 2 DropDown List(不允许修改combo的值)要求:
combo1值选择好后,combo2的值等于combo1的值。  当选择好combo2的值时,combo1的值等于combo2的值。由于程序修改combo的值,也会触发Combo_Click事件,所以下面会溢出。
Private Sub Combo1_Click()
Combo2.Text = Combo1.Text
End Sub
Private Sub Combo2_Click()
Combo1.Text = Combo2.Text
End Sub我把Combo类型改为 1(允许修改combo值 并设置属性 Lock=True),
虽然不会造成溢出,但 用户又不能 选择 选项了。哎,不知道有什么好的办法,满意我上面的那个要求  。

解决方案 »

  1.   

    2个combo stely=0
    Private Sub Combo1_KeyPress(KeyAscii As Integer)
    KeyAscii = 0
    End Sub
    Private Sub Combo2_KeyPress(KeyAscii As Integer)
    KeyAscii = 0
    End Sub
      

  2.   

    方法一,设个过程外部标识变量控制
    Option Explicit
    Private fInClick As Boolean'---------------------------------------------------------------------------------------
    ' 过程名    : Combo1_Click
    ' 时间      : 2010-7-3 09:47
    ' 作者      : 杨过.网狐.cn(csdn bcrun)
    ' 功能      :
    ' 说明      :
    ' 备注      :
    '---------------------------------------------------------------------------------------
    '
    Private Sub Combo1_Click()
        If (fInClick = True) Then Exit Sub  '检查值
        
       On Error GoTo Combo1_Click_Error
        fInClick = True     '设置值
        Debug.Print "Combo1_Click"
        Combo2.Text = Combo1.Text
       On Error GoTo 0
       fInClick = False     '恢复值
       Exit SubCombo1_Click_Error:     fInClick = False    '恢复值,注意错误处理中也要有
      'MsgBox "错误 " & Err.Number & " (" & Err.Description & ") in procedure Combo1_Click of Form Form1"
    End SubPrivate Sub Combo2_Click()
        If (fInClick = True) Then Exit Sub
       On Error GoTo Combo2_Click_Error
        fInClick = True
        Debug.Print "Combo2_Click"
        Combo1.Text = Combo2.Text
       On Error GoTo 0
       fInClick = False
       Exit SubCombo2_Click_Error:
       fInClick = FalseEnd SubPrivate Sub Form_Load()
        Dim i As Integer
        For i = 1 To 10
            Combo1.AddItem i
            Combo2.AddItem i
        Next i
    End Sub
      

  3.   

    用timer控件定时检测COMBO1的值,然后赋值给COMBO2。
      

  4.   

    combo.txt会只读,不知道你是怎么弄的会溢出。
      

  5.   


    我在属性LIST中添加好了 一些选项值。 所以 设Combo.text=XX 会让这个COMBO的值选择该选项
      

  6.   

    不能直接改text值,改用修改listindex
      

  7.   


    晕死你,我都成功改了。  只要设定的值,是你在List属性中添加的其中一项,是可以的。我讨论的不是这个问题,
    而是 如何让2个combo(Style 2 DropDown List) 的值同步
    (修改其中1个COMBO另一个COMBO就等于刚修改的COMBO的值)由于程序修改或手动修改了combo的值,都会触发combo_click事件,所以就造成了溢出。
      

  8.   

    如果两个combobox的条目一样的话好办。Option Explicit
    Dim f As BooleanPrivate Sub Form_Load()
        Dim i As Integer
        For i = 1 To 10
            Combo1.AddItem "col" & Format(i, "00")
            Combo2.AddItem "col" & Format(i, "00")
        Next
    End SubPrivate Sub Combo1_Click()
        If f Then Exit Sub
        f = True
        Combo2.Text = Combo1.Text
        f = False
    End Sub
    Private Sub Combo2_Click()
        If f Then Exit Sub
        f = True
        Combo1.Text = Combo2.Text
        f = False
    End Sub
      

  9.   


    如果两个 ComboBox 取值总是一样的话,干嘛还要两个?