WinForms - 禁用项目行为的默认鼠标悬停?

时间:2015-11-13 16:37:34

标签: c# winforms combobox mouseevent onmouseover

我有一个ComboBox项目。我还有一个SelectedIndexChange事件。 当我打开ComboBox并将鼠标悬停在某个项目上时,SelectedIndex属性似乎会更改为该项目。当我点击该项目时,我只想改变它。是否可以禁用该行为?

我有一个基于Image的{​​{1}}刷新SelectedIndex的计时器,但是,即使我突出显示一个项目但没有选择,为什么{{1}变更虽然它不应该改变,但它只应该在我选择一个项目时改变。

1 个答案:

答案 0 :(得分:2)

问题

当鼠标移动到ComboBox项时,SelectedIndex更改但SelectedIndexChanged事件不会触发,因此在您的计时器Tick事件中,您会看到<{1}}不会触发时的更改。

重现问题的场景

要简单地重现问题,请在表单上放置SelectedIndexChanged并启用它,然后处理其Timer事件。同时添加Tick并向其添加一些项目并处理其ComboBox事件。当您打开下拉列表并将鼠标移到项目上时,您会看到SelectedIndexChanged表单更改为光标下的项目索引,而Text不会触发,SelectedIndexChanged将显示。

MessageBox

针对您案例的解决方案

您只需使用private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { MessageBox.Show(this.comboBox1.SelectedIndex.ToString()); } private void timer1_Tick(object sender, EventArgs e) { this.Text = this.comboBox1.SelectedIndex.ToString(); } 的{​​{3}}属性检查下拉列表是否未打开,然后执行此操作:

ComboBox