在 CComboBox (MFC) 中通过文本设置选择

pad*_*igf 4 c++ mfc

我有一个 CComboBox 类型DropList(即它不可编辑)。按字符串设置当前选择的最简单方法是什么?

我知道我可以用SetCurSel()索引来设置它,但我希望函数按字符串搜索列表项并设置它。

Fré*_*idi 5

您可以调用FindStringExact()来获取要选择的字符串的索引,然后将该索引传递给SetCurSel()

yourComboBox.SetCurSel(yourComboBox.FindStringExact(0, yourString));
Run Code Online (Sandbox Code Playgroud)

请注意,在组合框中找不到字符串,-1将传递给SetCurSel(),这将导致清除任何先前的选择。如果该行为不适合您,您可能需要执行显式测试。

请注意,对于新的发展,Max 的答案应该是首选。但是,SelectString()仅从 Windows Server 2003 开始​​支持,因此您可能无法利用它,具体取决于您要支持的平台。

  • @Frédéric Hamidi - 事实上,你的*是*一个正确的答案。`CComboBox::SelectString()` 将选择任何以 `yourString` 开头的字符串;这就是您应该使用 FindStringExact() 的原因。当然,如果这种差异对您很重要:) (4认同)

Max*_*Max 5

CComboBox::SelectString 怎么样?

“在组合框的列表框中搜索字符串,如果找到该字符串,则选择列表框中的字符串并将其复制到编辑控件。”

https://msdn.microsoft.com/en-us/library/30ft9e54(v=vs.110).aspx