winforms – Windows UI设计 – 组合框

直到今天,我还没有意识到列表框(如
HTML表单控件下拉选择框)和“组合框”之间存在差异,“组合框”是列表框和文本输入控件的组合.因此,ComboBox允许用户输入新值,如果编程执行此操作,则会将值附加到单击时显示的值列表中.

刚刚阅读了几本关于界面设计的书籍,我认为虽然这个概念听起来很酷,但最终还是让我不得不另外选择“添加”选项,我觉得这对于不太高级的用户来说可能会让人感到困惑.可能会错过这样一个事实,你可以用这种方式输入值.

有没有人对组合框的使用及其与优秀的UI设计原则的赞成有任何意见?我的应用程序应该被所有年龄组的许多人使用.

最佳答案 马特,这里有一些可能对您有用的细节,以防您继续使用它.

我完全按照你提到的方式在我的表格上的几个地方使用了组合框.

除了添加功能外,您还可以进行编辑和操作.删除用户可以编辑/重命名和删除组合条目的用户选项.但是,在提供此功能时,您需要非常小心所选索引,因为它可能会非常混乱.

在我的情况下,我有以下三个项目来处理所有上述功能:

>带DropDownStyle =的组合框
落下
>保存按钮
>删除按钮

功能如下:

在组合框中除了用户已经保存的项目之外,我在顶部有一个项目–New–.
当用户必须编辑/重命名项目时,他应该从组合中选择项目,在组合中键入新名称,然后单击“保存”.
如果用户想要添加新项目,他应该从组合中选择–New–,在组合中键入名称(这将覆盖–New–)并单击Save
如果用户需要删除项目,则只需选择该项目并单击“删除”

我已经实现了SelectionChangeCommitted事件而不是SelectedIndexChanged,因为后者在通过代码设置所选索引时触发事件,而前者仅在用户从屏幕中选择组合框中的项目时触发事件.

另外,我维护了一个名为_selectedComboID的表单级变量,它存储了当前所选组合项的id.它在SelectionChangeCommitted事件处理程序中设置.这是因为,如果您必须重命名组合中的条目,您将首先选择它.那时selectedIndex是正确的(你选择的那个).然后,由于您需要重命名它,您将编辑组合文本并单击“保存”.但是,由于您已编辑了名称,因此它现在与所选索引混淆.因此,当用户进行选择时,我将其保存在变量中.

在Save方法中,我检查了_selectedComboID是否与–New–的ID相同.如果是,则触发插入代码,否则编辑代码.在这两种情况下,除了其他验证之外,您还需要检查用户选择的名称是否已存在.

如果要为组合框设置Sorted = true,则在整个代码中使用SelectedItem而非SelectedValue非常重要.这是因为当您为组合框设置sorted为true时,它会混淆所选的值.有关详细信息,请参阅Setting selected item in a ListBox without looping的帖子.

哇,那太大了!希望能帮助到你 :)

点赞