Vb.net 将组合框限制为列出值和过时的列表值

Vb.net 将组合框限制为列出值和过时的列表值,vb.net,validation,combobox,Vb.net,Validation,Combobox,我正在创建一个程序,为了简单起见,它会记录接到电话的工作人员的姓名。该程序旨在显示旧条目以及创建新条目 问题是,我希望用户在创建新条目时只能从下拉框中选择列出的名称。但此列表仅显示当前员工。但是,在查看旧的通话时,此组合框字段还需要显示接听可能不再在此列表中的通话的前员工 据我所知,对于Microsoft控件和属性,只有两个选项与此相关。 DropDownStyle作为DropDown或DropDownList 使用下拉列表时,用户可以提交任何名称(不需要)。 使用DropDownList,用户

我正在创建一个程序,为了简单起见,它会记录接到电话的工作人员的姓名。该程序旨在显示旧条目以及创建新条目

问题是,我希望用户在创建新条目时只能从下拉框中选择列出的名称。但此列表仅显示当前员工。但是,在查看旧的通话时,此组合框字段还需要显示接听可能不再在此列表中的通话的前员工

据我所知,对于Microsoft控件和属性,只有两个选项与此相关。 DropDownStyle作为DropDown或DropDownList

使用下拉列表时,用户可以提交任何名称(不需要)。 使用DropDownList,用户只能提交列表中的姓名,但在浏览旧条目时,不再在该列表中的姓名将不会出现在各自的通话中(这也是不需要的)


我知道我可能最终不得不实现我自己的combobox类,但我想看看是否有人知道一个结合了这两种功能的更优雅的修复程序。谢谢

使用下拉菜单。在验证事件中,设置
e.Cancel=True
,如果
SelectedItem为Nothing
,则指示
ErrorProvider
控件使用其
SetError
方法发出警告,否则清除错误(将
Nothing
传递给
SetError
)。然后,在组合框的
SelectionChangeCommitted
事件中,调用表单的
Validate
方法。添加模式添加新的通话记录,而查看模式显示旧记录


使用下拉列表将用户限制为您加载的内容。在添加模式下,仅使用当前员工加载控件。当表单处于查看模式时,加载所有员工。

我不确定是否理解您的问题。。。但是如果我这样做了,您可以向
验证
事件添加代码,以确保您获得的vlue是“允许的”。我不会使用相同的控件来显示当前员工和以前的员工,也不会只显示当前员工。以前的电话我会使用
列表框
,现在的员工会使用
组合框
。现在的员工和以前的员工是两个不同的概念,所以不要试图混淆它们