【发布时间】:2015-07-30 08:48:11
【问题描述】:
我想设置组合框列表中不存在的组合框文本。 例如,如果组合框有 3 个项目:
- 苹果
- 橙色
- 香蕉
我正在做这个组合框的选择更改事件。
ON_CBN_SELCHANGE(IDC_COMBO, OnComboClick)
void CmmAcceptCtrl::OnComboClick()
{
CString str;
m_combo.GetLBText(m_combo.GetCurSel(), str);
str += " Test";
m_combo.SetWindowText(str);
}
现在,如果我选择“橙色”,我希望组合框的文本变为“橙色测试”,但文本没有更改,尽管我正在执行 SetWindowText,但我会得到“橙色”。
有没有一种方法可以让我们拥有与从组合框列表中选择的文本不同的文本?
【问题讨论】:
-
下拉样式很重要,CBS_DROPDOWNLIST 不允许不匹配。
-
@HansPassant 实际上没有任何组合框样式允许不匹配。
-
你为什么不直接改变项目本身呢?如果需要,您可以保留一个包含原始名称的单独数据结构,以便您可以使用原始名称重新填充组合框并修改选定的名称
-
我们不知道这个控件到底是什么,因为你没有告诉我们样式
-
@MichaelWalz 另外两种样式允许在编辑控件中输入任意文本,它不必匹配列表中的条目。
标签: winapi visual-c++ combobox mfc