如何让一个组合框不能修改呢?(前提是不能设成dropdown list)
----------------------------------------------------
我知道,如果将组合框的 style 设成 dropdown list 一定不会被修改,只能选择。
但是这样为组合框赋值时比较麻烦,因为如果这种 style 下,组合框的 text 属性是只读的。
所以我还是想设置成 dropdown combo,但是让用户不能修改,如何实现呢?

解决方案 »

  1.   

    Private Sub Combo1_KeyPress(KeyAscii As Integer)
        KeyAscii = 0
    End Sub
    赋值还是可以
      

  2.   

    不知道你要干什么用.
    不能修改组合框,combo1.locked=true,就可以了
      

  3.   

    text属性只读与程序修改没关系吧?
      

  4.   


    text属性只读与程序修改没关系吧?
    --------------------------------------
    比如我在程序中要进行
    combo1.text="组合框项目1"这种操作,只能将 style 设置成 dropdown combo 才能,设置 dropdown list 是会报错的。但是我在程序中,有时就要进行以上这种赋值操作。但是我又不能让用户直接修改组合框的值,即组合框的值我在程序中可以随便改,但是不让用户修改。
    因为用户如果能修改,就有可能出现非法的值,我又要加上合法性判断,太麻烦了。不能用户改,比较容易减少bug,但是问题是,如何让这个组合框不让用户能修改,但是我的程序又能随便为其赋值呢?
      

  5.   


    lock后,就无法进行不同的选择了呀。
    定在一条上呀,没法改,这不是我要的,我要的是用户不能改,但是用户能选择。但是程序中可以修改组合框的text属性。
      

  6.   

    我发现了,del键也不受控呀。
      

  7.   

    其实,我不会的是如何屏蔽鼠标右键,
    还有,delete键如何屏蔽,退格键如何屏蔽等
      

  8.   

    不知道你是如何用的??测试以下程序:Private Sub Command1_Click()
       Combo1.ListIndex = 15
    End SubPrivate Sub Form_Load()
       Dim i As Integer
       For i = 100 To 115
       Combo1.AddItem i
       NextEnd Sub
      

  9.   

    11楼,我不是说 additem,这个永远不会出错。我说的是:
    combo1.text="mmmmmmm"
    即text属性会报错呀。因为是只读。
    所以必须设置成 dropdown combo才行。
      

  10.   


    style属性设置为dropdown
    之后写入如下代码:Option ExplicitPrivate Sub Command1_Click()
    On Error Resume Next
    Combo1.Text = "300"
    End SubPrivate Sub Form_Load()
    Dim i As Long
    For i = 0 To 100
        Combo1.AddItem i
    Next i
    End Sub
    当你赋值的时候,写入的值combo中存在的话,是不会报错的。如果不存在的话,直接用错误处理跳过即可。
      

  11.   

    当你赋值的时候,写入的值combo中存在的话,是不会报错的。如果不存在的话,直接用错误处理跳过即可。
    ----------------------------------
    不能跳过呀,我的目的就是赋值成功呀。跳过的话,我直接将style 设成 dropdown list不完了
      

  12.   

    一样的方法屏蔽del键,至于右键删除得弄个钩子.
    只是似乎没什么必要吧,不让它为空不就得了.给它赋值后,用个变量记录下来,一旦为空,还回去就行了.
    Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
        KeyCode = 0
    End Sub
      

  13.   


    楼主是想任意修改(这个值在 List中可能不存在)?
    还是‘可以修改组合框的text属性’、但这个必定存在于List中?如果是前者,可能比较费事。
    但如果是后者,那就好办了(style设置成dropdown list,可以直接赋值,且不需要关心具体是哪一项)。
      

  14.   

    楼主就把它做成dropdowm list,你想修改的时候,把要修改的内容加入到list中就行了
      

  15.   

    楼主是想任意修改(这个值在 List中可能不存在)?
    还是‘可以修改组合框的text属性’、但这个必定存在于List中?
    ---------------------------------------
    确实是前者,比较麻烦。
      

  16.   


    汗死~~~你用错误处理跳过之后再自己捕获错误,然后手工将text加入进去不就完了~~!
      

  17.   

    汗死~~~你用错误处理跳过之后再自己捕获错误,然后手工将text加入进去不就完了~~!
    ---------------------------------------------
    太找乐了,极不严谨的工作方式,你把错误处理,当正式的流程做,这样会出事的,迟早呀。
      

  18.   

    Option Explicit
    Dim t As StringPrivate Sub Combo1_Change()
    Combo1.Text = t
    End SubPrivate Sub Combo1_Click()
    t = Combo1.Text
    End Sub
    Private Sub Command1_Click()
    t = "ttt"
    Combo1.Text = "ttt"
    End SubPrivate Sub Form_Load()
    Combo1.ListIndex = 0
    End Sub
      

  19.   

    汗死~~~要严谨的话,你压根就不该用combo1.text="组合框项目1" 这样的赋值方式,应该自己写代码查找匹配的项目,然后进行选定!!!!!