【问题标题】:restricting a combobox to list values and outdated list values限制组合框以列出值和过时的列表值
【发布时间】:2014-12-05 19:48:54
【问题描述】:

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

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

据我所知,Microsoft 控件和属性只有 2 个选项与此问题相关。 DropDownStyleDropDownDropDownList

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

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

【问题讨论】:

  • 不确定我是否理解您的问题...但如果我理解了,您可以将代码添加到 Validate 事件以确保您获得的 vlue 是“允许的”
  • 我不会使用相同的控件来显示当前和以前的员工仅显示当前员工。我会为以前的电话使用ListBox,为当前员工使用ComboBox
  • 现任和前任员工是两个不同的概念,所以不要试图混淆他们

标签: vb.net validation combobox


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    使用下拉菜单。在验证事件中,设置e.Cancel = True 并指示ErrorProvider 控件在SelectedItem Is Nothing 时使用其SetError 方法发出警告,否则清除错误(通过将Nothing 传递给SetError)。然后,在组合框的SelectionChangeCommitted 事件中,调用表单的Validate 方法。

    【讨论】:

      猜你喜欢
      • 2014-04-28
      • 2010-12-14
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      相关资源
      最近更新 更多