【问题标题】:selected item change ComboBox所选项目更改组合框
【发布时间】:2011-08-17 08:55:38
【问题描述】:

有什么方法可以防止仅在某些条件下更改 ComboBox 中的选定项目?我想允许在 ComboBox 中更新所选项目的 displayValue。但我不希望用户在更新时更改所选项目。这是一个 Windows 应用程序。

【问题讨论】:

    标签: c# winforms combobox


    【解决方案1】:

    在你的课堂上:

    private int _selectedIndex = 0;
    

    在您的表单加载方法中:

    comboBox1.Enter += new EventHandler(comboBox1_Enter);
    comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
    

    然后是剩下的代码:

    protected void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
        if (true) { // Add your validation or certain condition here.
            (sender as ComboBox).SelectedIndex = _selectedIndex;
        }
    }
    
    protected void comboBox1_Enter(object sender, EventArgs e) {
        _selectedIndex = (sender as ComboBox).SelectedIndex;
    }
    

    【讨论】:

    • 感谢您的回复。但我想阻止打开项目列表。这种解决方案不会让用户感到困惑。
    【解决方案2】:

    尝试将 Enabled 属性设置为 false。 (或者一些第三方工具包,比如 Telerik 有一个带有 ReadOnly 属性的 ComboBox。)

    【讨论】:

    • @David:我希望所有用户都可以编辑所选项目的文本但更改所选项目。
    • 您可以键入和编辑所选项目的显示值。我想提供该功能,同时防止禁用所选项目。
    • ComboBox 旨在让用户 (1) 从预定义列表中选择一个项目,并可选择 (2) 键入列表中尚不存在的自定义值。如果我理解正确,您所描述的功能将需要自定义控件。
    • 不,你没有得到它。我只想更新所选项目。但我不希望用户在更新时更改所选项目。
    • 我不知道 ComboBox 是为了实现这一点而设计的……我不能说我曾经遇到过任何类似这样的代码。这就是我推荐自定义控件的原因。请注意,这远远超出了您最初问题的范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2011-04-14
    • 2016-04-18
    • 2011-04-12
    相关资源
    最近更新 更多