如何让一个组合框不能修改呢?(前提是不能设成dropdown list)
----------------------------------------------------
我知道,如果将组合框的 style 设成 dropdown list 一定不会被修改,只能选择。
但是这样为组合框赋值时比较麻烦,因为如果这种 style 下,组合框的 text 属性是只读的。
所以我还是想设置成 dropdown combo,但是让用户不能修改,如何实现呢?
----------------------------------------------------
我知道,如果将组合框的 style 设成 dropdown list 一定不会被修改,只能选择。
但是这样为组合框赋值时比较麻烦,因为如果这种 style 下,组合框的 text 属性是只读的。
所以我还是想设置成 dropdown combo,但是让用户不能修改,如何实现呢?
解决方案 »
- 对于使用wmi,如果用VB得不到硬盘ID,那么用C#可以得到吗?
- 请问怎么枚举出计算机上的所有 U盘??
- 代码页转换问题
- StringToUTCTime("2005-09-20 11:21:03") 返回值为何是0啊
- vbscript问题
- vb+oracle+ado 打包时遇到的问题,100分,SOS!
- 如何在VB里使用VFP6?的数据库?
- 帮我理解这个sql语句
- 請問高手怎樣把msflexgrid 的datasource指向一個我用ado打開的表
- 救命啊!!明天就要考试了!!!请大家看看这几道试题!!!
- 一个VB写的程序里面的一个Dll,我想在C#程序里面调用它,我要怎么做呢?
- 熟悉加密算法的朋友进来看看
KeyAscii = 0
End Sub
赋值还是可以
不能修改组合框,combo1.locked=true,就可以了
text属性只读与程序修改没关系吧?
--------------------------------------
比如我在程序中要进行
combo1.text="组合框项目1"这种操作,只能将 style 设置成 dropdown combo 才能,设置 dropdown list 是会报错的。但是我在程序中,有时就要进行以上这种赋值操作。但是我又不能让用户直接修改组合框的值,即组合框的值我在程序中可以随便改,但是不让用户修改。
因为用户如果能修改,就有可能出现非法的值,我又要加上合法性判断,太麻烦了。不能用户改,比较容易减少bug,但是问题是,如何让这个组合框不让用户能修改,但是我的程序又能随便为其赋值呢?
lock后,就无法进行不同的选择了呀。
定在一条上呀,没法改,这不是我要的,我要的是用户不能改,但是用户能选择。但是程序中可以修改组合框的text属性。
还有,delete键如何屏蔽,退格键如何屏蔽等
Combo1.ListIndex = 15
End SubPrivate Sub Form_Load()
Dim i As Integer
For i = 100 To 115
Combo1.AddItem i
NextEnd Sub
combo1.text="mmmmmmm"
即text属性会报错呀。因为是只读。
所以必须设置成 dropdown combo才行。
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中存在的话,是不会报错的。如果不存在的话,直接用错误处理跳过即可。
----------------------------------
不能跳过呀,我的目的就是赋值成功呀。跳过的话,我直接将style 设成 dropdown list不完了
只是似乎没什么必要吧,不让它为空不就得了.给它赋值后,用个变量记录下来,一旦为空,还回去就行了.
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = 0
End Sub
楼主是想任意修改(这个值在 List中可能不存在)?
还是‘可以修改组合框的text属性’、但这个必定存在于List中?如果是前者,可能比较费事。
但如果是后者,那就好办了(style设置成dropdown list,可以直接赋值,且不需要关心具体是哪一项)。
还是‘可以修改组合框的text属性’、但这个必定存在于List中?
---------------------------------------
确实是前者,比较麻烦。
汗死~~~你用错误处理跳过之后再自己捕获错误,然后手工将text加入进去不就完了~~!
---------------------------------------------
太找乐了,极不严谨的工作方式,你把错误处理,当正式的流程做,这样会出事的,迟早呀。
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