【发布时间】:2015-03-20 22:53:32
【问题描述】:
我正在使用带有下拉样式的组合框:列表。
我需要隐藏下拉菜单,以防用户决定不更改值(特殊情况)。
问题是当调用下拉事件时,组合框下拉设置仍显示为 false。根据事件定义"dropdown": Occurs when the drop-down portion of a ComboBox is shown。
那么当事件被调用时,“droppeddown”设置不应该是真的吗?
private void comboBoxSelectEntry_DropDown(object sender, EventArgs e)
{
MessageBox.Show(comboBoxSelectEntry.DroppedDown.ToString());
if (isChange || isOAWinShown)
if (MessageBox.Show("Warning: You will loose current session data", "Warning", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
{
this.comboBoxSelectEntry.DroppedDown = false;
return;
}
List<string> _data = classes.databank.Anchor.Collection.Where(node => !node.retired).Select(node => node.Name).ToList();
this.comboBoxSelectEntry.DataSource = null;
this.comboBoxSelectEntry.DataSource = _data;
}
【问题讨论】:
-
使用
selectedIndex属性怎么样?如果索引相同且未更改,则隐藏它。 -
不确定这将如何工作。只有在用户选择了不同的值后,才会调用 SelectedIndex 更改。如果我不隐藏下拉菜单,那么用户可以选择一个值,这将更改所选索引。
-
this.BeginInvoke(new Action(() => comboBoxSelectEntry.DroppedDown = false));这行得通,但不会让你兴奋,它和它会得到的一样好。重新设计你的 UI 以避免它。
-
@HansPassant,非常好的解决方法,但很棘手。再说一次,我的猜测是问题的真正答案那么当事件被调用时“下拉”设置不应该是真的吗?仍然是一个否.. .
-
绝对不,这是一个“即将下降”的通知。在显示消息框时看不到下拉菜单最明显。如果本机控件允许以某种方式取消它会很好,因此该事件可能有 CancelEventArgs 参数,但它不是这样设计的。