2011-08-06 15 views
0

私はComboBoxに2つのReadOnlyと1が編集可能なアイテムを追加しようとしています。私が直面している問題は、選択した編集可能アイテムを編集する解決策が出てこないことです。 私は持っていますComboBoxを作成して3つのアイテムを追加し、DropDownListにdropdownStyleを設定します。 誰かが私を助けることができますか? ありがとうC#のコンボボックスで読み取り専用アイテムと編集可能アイテムを取得する方法は?

答えて

1

これは簡単ではありません。ただし、TextUpdateイベントを使用してテキストの変更を検出することは可能です。その後、元の選択を後で復元すると、Control.BeginInvoke()が便利です。このサンプルフォームはうまくいき、コンボボックスをデザイナーにドロップします。 2番目の項目が保護されている:あなたはDropDownListコントロールを使用することはできません

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; } 
    } 
} 

注意を、そのスタイルは、編集を許可していません。

関連する問題