Как иметь только для чтения и редактирования элементов на comboBox в C #? - PullRequest
0 голосов
/ 06 августа 2011

Я пытаюсь добавить элементы в ComboBox, из которых 2 являются ReadOnly, а 1 является редактируемым элементом. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти решение для редактирования выбранного редактируемого элемента. У меня естьсоздайте ComboBox и добавьте 3 элемента и установите dropdownStyle равным DropDownList. Кто-нибудь может мне помочь ???Спасибо

1 Ответ

1 голос
/ 06 августа 2011

Это не так просто. Но возможно, вы можете использовать событие TextUpdate, чтобы обнаружить изменения в тексте. Затем восстановите исходное выделение, для этого пригодится 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; }
    }
}

Обратите внимание, что вы не можете использовать DropDownList, этот стиль не позволяет редактировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...