【问题标题】:MFC How to type into a combo box when certain item is selected选择某些项目时,MFC如何在组合框中键入
【发布时间】:2021-12-26 13:19:50
【问题描述】:

我在 MFC 应用程序中创建了一个 COMBOBOX。

假设我里面有 3 个元素:“apples”“bananas”“Type...”

When "apples" and "bananas" are selected don't allow the user to type into the combobox which is achieved by the CBS_DROPDOWNLIST property of my COMBOBOX definition.

但是,选择“类型... ”时,我希望用户通过在组合框内键入来添加新的水果。

换句话说,根据所选元素的不同,组合框具有CBS_DROPDOWNLISTCBS_DROPDOWN 属性。

这可能吗?

【问题讨论】:

  • 那将是一个对用户非常不利的 UI。强迫用户选择一个特定的项目,只是让他们输入他们真正想要输入的项目,这很烦人。要么允许用户总是输入新项目,要么完全放弃将新条目添加到不同 UI 中的能力。后者提供了更好的可发现性。
  • 你必须在创建后更改组合框样式,我认为这是不可能的。

标签: c++ user-interface mfc


【解决方案1】:

不可以,组合框只能有CBS_DROPDOWNLISTCBS_DROPDOWNCBS_SIMPLE 样式中的一种,而不是它们的组合。

您可以通过使用CBS_DROPDOWN 样式并禁用编辑控件(当用户选择"Type..." 时启用它)以某种方式模拟您想要的行为。 GetComboBoxInfo() 函数(或 CB_GETCOMBOBOXINFO 消息)返回编辑和列表控件的句柄以及其他信息。

或者使用CBS_DROPDOWNLIST 样式并显示一个简单的对话框(带有一个编辑控件和确定/取消按钮来向组合框中添加一个元素)

【讨论】:

    猜你喜欢
    • 2012-04-28
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多