这看起来很简单,但我无法弄清楚。好像我想将Locked
属性设置为Yes
,但这实际上阻止他们在下拉列表中选择任何内容!
当我说readonly时,我的意思是让组合框预先加载值并强制用户只选择其中一个值而不能自己键入。
有什么想法吗?
答案 0 :(得分:3)
实现此目标的标准方法是将Limit To List
属性设置为True
。
用户可以输入无效文字,但如果他标记或按Enter键弹出窗口会说
您输入的文字不是中的项目 列表
他将被迫退回选择列表中的内容。
与你在其他地方获得的真正的下拉列表控件(VB6,Winforms,.NET等)相比,这并不是很好。
答案 1 :(得分:2)
您应将Limit To List
属性设置为是
答案 2 :(得分:2)
您要求的内容分为两部分:
一个。我的意思是让组合框预先加载值...
为此,您无需做任何事情 - 只需适当设置rowsource即可。要在列表中添加值,您必须做一些工作,但为了防止,您根本不需要做任何事情。
湾并强制用户只能选择其中一个值而不能 输入他们自己的。
如其他答案所述,您需要将LimitToList属性设置为TRUE。
现在,您从中获取的错误消息并不是那么好,因此您可能希望将NotInList事件定义为对用户更友好一些。这样的事情可能是恰当的:
Private Sub MyCombo_NotInList(NewData As String, Response As Integer)
MsgBox Chr(34) & NewData & Chr(34) & _
" is not one of the choices in the list.", _
vbInformation, "Select from the list"
Me!MyCombo.Undo
Response = acDataErrorContinue
End Sub
如果你想要添加到列表中,这也是你处理它的地方,但是既然你没有,你只需要关心自己告知用户问题(即保护他们免受神秘的影响)默认错误消息)。
答案 3 :(得分:0)
您也可以将此代码添加到组合框的按键事件中
KeyAscil = 0
msgbox " please select from list"
这将阻止用户写入组合框并显示消息错误