簡體   English   中英

將列表條目引用到ComboBoxItem

[英]Refer List entrys to a ComboBoxItem

情況:我有3個文本框,一個按鈕和一個組合框。 當我在每個TextBox中輸入內容並觸發按鈕時,我希望可以在ComboBox中選擇我在TextBoxes中編寫的字符串作為ComboBoxItem。 我想到了將TextBoxes中的字符串放入列表中,並將ComboBoxItem引用到正確的列表項的想法。 還是有一種更有效的方法來設置和獲取這些字符串? 如果有人可以幫助我編寫代碼,那將很好。

    private void bAdd_Click(object sender, RoutedEventArgs e)
    {

        Random random = new Random();
        int randomNumber = random.Next(0, 100);


        int txBetrag;
        txBetrag = int.Parse(betrag1.Text);
        int txMonate;
        txMonate = int.Parse(monate1.Text);
        int txZins;
        txZins = int.Parse(zins1.Text);


        List<int> abList = new List<int>();

        comboBox.Items.Add("1");
    }

如果您只想將txBetrag,txMonate和txZins添加到組合框,則不需要列表。 目前,您正在創建一個列表,不添加任何內容,然后僅向comboBox添加1個條目(甚至不從列表中添加)。

要添加項目,請執行以下操作:

comboBox.Items.Add(int.Parse(betrag1.Text));
comboBox.Items.Add(int.Parse(monate1.Text));
comboBox.Items.Add(int.Parse(zins1.Text));

如果您確實也需要該列表(也許因為它也在其他地方使用),則可以執行以下操作:

abList.Add(int.Parse(betrag1.Text));
abList.Add(int.Parse(monate1.Text));
abList.Add(int.Parse(zins1.Text));

然后使用列表填充comboBox:

foreach(var item in abList)
{
    comboBox.Items.Add(item);
}

更新

根據您的評論,似乎您想在comboBox中輸入一個條目,該條目實際上是將3個文本框值串聯在一起。 因此,您可以執行以下操作:

comboBox.Items.Add(betrag1.Text + monate1.Text + zins1.Text);

更新2

在您最后要評論的事實是,您想要1個comboBox項引用3個值,但不顯示它們,是的,您可以這樣做。

假設您在comboBox中不會有重復的條目,則可以使用Dictionary將值映射到條目,而不是使用列表。 我在這里假設您最終在comboBox中將有多個條目,否則擁有combobox會毫無意義。

var valueComboMapping = new Dictionary<string, int[]>();

valueComboMapping.Add("Entry 1", new int[] {int.Parse(betrag1.Text), int.Parse(monate1.Text), int.Parse(zins1.Text)};

這樣一來,您便可以在以后添加映射。 然后,您可以使用Dictionary在comboBox中創建清單,如下所示:

foreach(var entry in valueComboMapping.Keys)
{
    comboBox.Items.Add(entry);
}

若要觸發事件,請使用SelectedIndexChanged事件在comboBox中選擇一個項目。

取值

要在SelectedIndexChanged事件中檢索映射的值,可以執行以下操作:

private void comboBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
    ComboBox comboBox = (ComboBox) sender;
    string entryName = (string) comboBox.SelectedItem;

    //retrieve the values from the dictionary using the value of 'entryName'.
    List values = new List<int>();
    if (valueComboMapping.TryGetValue(entryName, out values)
    {
        //do something if the key is found.
    }
    else
    {
        //do something else if the key isn't found in the dictionary.
    }
}

為了使它起作用,您需要按如下方式創建字典:

var valueComboMapping = Dictionary<string, List<int>>();

代替:

var valueComboMapping = Dictionary<string, int[]>();

您可以直接添加到組合框,而無需添加到列表。您正在使用int.Parse,它將生成Format異常。

 private void button1_Click(object sender, EventArgs e)
 {
     comboBox1.Items.Add(betrag1.Text);
     comboBox1.Items.Add(monate1.Text);
     comboBox1.Items.Add(zins1.Text);                    
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM