【发布时间】:2011-01-31 13:54:09
【问题描述】:
我在 MSVS 2008 中编写了一个应用程序,它有一个 ComboBox 控件,我通过以下代码对其进行初始化:
static char* OptionString[4] = {"Opt1",
"Opt2",
"Opt3",
"Opt4"};
BOOL CMyAppDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_Option.AddString(OptionString[0]);
m_Option.AddString(OptionString[1]);
m_Option.AddString(OptionString[2]);
m_Option.AddString(OptionString[3]);
m_Option.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
}
在上面的代码中,m_Option 是 ComboBox 控件的 Control 变量。
现在,当我构建应用程序并单击向下箭头时,下拉框仅显示第一个选项(因为我已通过代码选择了该选项)。但是,如果我按下键盘上的向下箭头键,它会按照我插入的顺序循环选择选项,但它永远不会在框中显示超过 1 个选项。因此,如果用户想要选择选项 3,他必须循环选择选项 1 和 2 !虽然一旦我使用键盘选择了任何选项,相应的事件处理程序就会被触发,但我对这种行为感到很恼火,这是可以理解的。
我也列出了组合框控件的属性 - 只有属性为真(其余设置为假):
- 类型 - 下拉列表
- 垂直滚动条
- 可见的制表符
这已经困扰了我好几个星期了。谁能赐教?
【问题讨论】:
标签: visual-c++ visual-studio-2008 drop-down-menu combobox mfc