2012-01-17 109 views
2

我想創建一個ComboBox用戶可以在文本區域中輸入一個整數值,但下拉列表包含幾個「默認值」值。例如,在下拉列表中的項目會採用以下格式:選擇組合框中的項目並將組合框文本設置爲不同的項目?

  • 默認 - 0
  • 值1 - 1
  • 值2 - 2

我要的是當用戶選擇一個項目時(例如「默認 - 0」),ComboBox文本將只顯示數字「0」而不是「默認 - 0」。單詞「默認」只是信息文本。

我玩過以下活動:SelectedIndexChanged,SelectedValueChangedSelectionChangeCommitted,但我無法更改ComboBox的文字。

private void ModificationCombobox_SelectionChangeCommitted(object sender, EventArgs e) 
{ 
    ComboBox comboBox = (ComboBox)sender; // That cast must not fail. 
    if (comboBox.SelectedIndex != -1) 
    { 
     comboBox.Text = this.values[comboBox.SelectedItem.ToString()].ToString(); // Text is not updated after... 
    } 
} 

回答

2

您可以定義一個類爲您ComboBox項目,然後創建一個List<ComboBoxItem>並使用它作爲你的Combobox.DataSource。有了這個,你可以設置ComboBox.DisplayMember到您希望在顯示屬性,仍然可以得到從ComboBox_SelectedIndexChanged()引用您的對象:

class ComboboxItem 
{ 
    public int Value { get; set; } 
    public string Description { get; set; } 
} 

public partial class Form1 : Form 
{ 
    List<ComboboxItem> ComboBoxItems = new List<ComboboxItem>(); 
    public Form1() 
    { 
    InitializeComponent(); 
    ComboBoxItems.Add(new ComboboxItem() { Description = "Default = 0", Value = 0 }); 
    ComboBoxItems.Add(new ComboboxItem() { Description = "Value 1 = 1", Value = 1 }); 
    ComboBoxItems.Add(new ComboboxItem() { Description = "Value 2 = 2", Value = 2 }); 
    comboBox1.DataSource = ComboBoxItems; 
    comboBox1.DisplayMember = "Value"; 

    } 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
    var item = (ComboboxItem)((ComboBox)sender).SelectedItem; 
    var test = string.Format("Description is \'{0}\', Value is \'{1}\'", item.Description, item.Value.ToString()); 
    MessageBox.Show(test); 
    } 
} 

[編輯] 如果你想改變顯示文本時,下拉狀態之間盒toogles試試這個:(這是一個概念,不知道如何表現)

private void comboBox1_DropDown(object sender, EventArgs e) 
    { 
     comboBox1.DisplayMember = "Description"; 
    } 

    private void comboBox1_DropDownClosed(object sender, EventArgs e) 
    { 
     comboBox1.DisplayMember = "Value"; 
    } 
+0

謝謝,與您的理念完美合作! (我編輯了你的代碼來添加selectedIndex的存儲和恢復以保持修改) – 2012-01-17 13:10:17