2010-02-23 80 views
2

我在窗体上有一个下拉列表样式的CComboBox。关于这种风格的好处是它允许提前输入 - 也就是说,您可以键入一个字符,并且它将跳转到匹配该字符的列表中的第一个项目。但是,某些项目需要从此行为中排除。这可以如何实现?仅包含CComboBox类型中的某些项目吗?

回答

1

就像一个简单的(也许是丑陋的)“诡计”的想法:你能掩盖你想排除的任何特殊字符,比如*作为第一个字符吗? (因此,您将添加到组合框*MyItemText而不是MyItemText。)如果您的项目列表需要排序,您必须先关闭ComboBox的autosort属性,然后执行自己的排序(不包括*),然后再将项目添加到组合框。用户也会认识到,这是一个无法通过提前键入的项目(如果这在您的应用程序中有意义或应该有用)。

CComboBox没有任何Edit或TextChanged事件。所以我的猜测是,对于另一个更好的解决方案,您必须努力工作并评估单个键盘事件,并通过项目列表运行自己的搜索。我没有更好的主意。

+0

是的,我试图跳过的项目实际上是从一个括号'['开始的,所以我不认为你的建议会起作用(不过好主意)。 – drewh 2010-02-24 19:33:06

+0

确实令人惊讶:如果我在ComboBox中输入'c',但是找不到'ccc'并且实际上在搜索中跳过,则会找到一个项目[ccc]。我不相信,如果我没有它只是测试:) – Slauma 2010-02-24 19:47:37

相关问题