我正在使用带有dropdownstyle的组合框:列表 我需要隐藏下拉菜单,以防用户决定不更改值(特殊情况)。
问题是当调用下拉事件时,组合框下拉设置仍显示为false。根据事件"dropdown": Occurs when the drop-down portion of a ComboBox is shown
的定义。
调用事件时,“dropdown”设置不应该为真吗?
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;
}
答案 0 :(得分:2)
实际上你已经提供了答案,它是一个“没有”的答案。对于你的问题&#39;所以不应该&#34; dropdown&#34;调用事件时设置为true?&#39;。 DroppedDown
属性实际上是在显示下拉列表后设置的。因此事件被触发,但是在显示组合框内容的可视化之后设置属性。
因此事件DropDown的命名是正确的,它将执行一个下拉事件来触发。在触发(并可视化列表)之后,DroppedDown属性设置为true并保持这种状态,直到用户选择一个项目。
MSDN页面实际上是正确的,所以我猜你可以不同意它,但不要打扰。当时的设计是DroppedDown属性仅在触发事件后 时设置。不是之前。
如果您确实需要这种方法,请考虑重新设计(如评论中提及的Hans Passant),或者如果您有时间,可以创建自己的控件。