如何在c#的组合框中拥有只读和可编辑的项目

本文关键字:只读 项目 编辑 拥有 组合 | 更新日期: 2023-09-27 18:04:53

我试图在组合框中添加项目,其中2是只读的,1是可编辑的项目。我所面临的问题是,我不能提出一个解决方案来编辑所选的可编辑项目。我创建了一个组合框,并添加了3个项目,并将下拉样式设置为DropDownList..有人能帮帮我吗?由于

如何在c#的组合框中拥有只读和可编辑的项目

可没那么容易。但是,您可以使用textuupdate事件来检测文本的更改。然后稍后恢复原始选择,Control.BeginInvoke()很方便。这个示例表单运行良好,在设计器中放置一个组合框。第二项受保护:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        comboBox1.TextUpdate += new EventHandler(comboBox1_TextUpdate);
        comboBox1.Items.Add(new Content { text = "one" });
        comboBox1.Items.Add(new Content { text = "two", ro = true });
        comboBox1.Items.Add(new Content { text = "three" });
    }
    private void comboBox1_TextUpdate(object sender, EventArgs e) {
        int index = comboBox1.SelectedIndex;
        if (index < 0) return;
        var content = (Content)comboBox1.Items[index];
        if (content.ro) this.BeginInvoke(new Action(() => {
                comboBox1.SelectedIndex = index;
                comboBox1.SelectAll();
            }));
    }
    private class Content {
        public string text;
        public bool ro;
        public override string ToString() { return text; }
    }
}

注意你不能使用下拉列表,那个样式不允许编辑