2014-12-05 41 views
1

我正在创建一个程序,为了简单起见,记录了接听电话的工作人员的姓名。此计划旨在显示旧条目以及创建新条目。将组合框限制为列表值和过时的列表值

问题是我希望用户只能在创建新条目时从下拉框中选择列出的名称。但是这份名单只会显示当前的员工。然而,在查看较旧的呼叫时,该组合框字段还需要显示曾接听电话的前雇员,该呼叫可能不再位于该列表中。

据我可以告诉微软的控制和属性只有2个选项涉及到这个问题。 DropDownStyle as DropDown or DropDownList

当使用DropDown用户可以提交任何名称(这是不想要的)。 With DropDownList用户只能在列表中提交姓名,但在浏览旧条目时,不再在该列表中的任何姓名都不会出现在他们各自的呼叫中(这也不是)。

我知道我可能最终不得不实现我自己的组合框类,但我想看看是否有人知道将这两种功能结合在一起的更优雅的修复方法。谢谢!

+0

不知道我理解你的问题......但如果我这样做,你可以添加代码到'验证'事件,以确保你得到的线索是“允许” – 2014-12-05 19:56:04

+0

我不会使用相同的控件**显示当前和以前的员工**和**只显示当前员工**。我会为以前的调用使用'ListBox',为当前员工使用'ComboBox'。 – djv 2014-12-05 20:11:34

+0

当前和以前的员工有两个不同的概念,所以不要试图混用它们 – Plutonix 2014-12-05 20:50:46

回答

-1

使用DropDown。在验证事件中,如果SelectedItem Is Nothing设置为e.Cancel = True并指示ErrorProvider控件使用其SetError方法发出警告,但要清除该错误(通过将Nothing传递给SetError)。然后,在组合框的SelectionChangeCommitted事件中,调用窗体的Validate方法。

0

在我看来,你有两种模式。添加模式添加新的通话记录,而查看模式显示旧记录。

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