设置了dropdown标志之前的下拉事件

时间:2015-01-22 08:05:35

标签: c# winforms combobox

我正在使用带有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;
}

1 个答案:

答案 0 :(得分:2)

实际上你已经提供了答案,它是一个“没有”的答案。对于你的问题&#39;所以不应该&#34; dropdown&#34;调用事件时设置为true?&#39;。 DroppedDown属性实际上是在显示下拉列表后设置的。因此事件被触发,但是在显示组合框内容的可视化之后设置属性。

因此事件DropDown的命名是正确的,它将执行一个下拉事件来触发。在触发(并可视化列表)之后,DroppedDown属性设置为true并保持这种状态,直到用户选择一个项目。

MSDN页面实际上是正确的,所以我猜你可以不同意它,但不要打扰。当时的设计是DroppedDown属性仅在触发事件后 时设置。不是之前。

如果您确实需要这种方法,请考虑重新设计(如评论中提及的Hans Passant),或者如果您有时间,可以创建自己的控件。