将列表项引用到组合框项

本文关键字:组合 引用 列表 | 更新日期: 2023-09-27 17:52:52

情况:我有3个文本框,一个按钮和一个组合框。当我在每个TextBox中输入一些东西并触发按钮时,我希望我在TextBox中编写的字符串可以在ComboBox中作为ComboBoxItem被选择。我想到了将textbox中的字符串放入列表中,并将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");
    }

将列表项引用到组合框项

如果你只是想添加txtrag, txMonate和txZins到你的组合框,那么你不需要一个列表。此刻你正在创建一个列表,没有添加任何内容,然后简单地添加一个条目到你的组合框(甚至不是从你的列表)。

添加项目:

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

更新

根据您的评论,似乎您想要一个条目在组合框中,这实际上是3个文本框值连接在一起。所以你可以这样做:

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

更新2

根据你的最后一个评论,你想要一个组合框项引用3个值,但不显示它们,是的,你可以这样做。

假设组合框中没有重复的条目,您可以使用Dictionary将值映射到条目,而不是使用列表。我在这里假设你最终会在你的组合框中有不止一个条目,否则有一个组合框有点毫无意义。

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在组合框中创建清单,如下所示:

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

使用SelectedIndexChanged事件触发一个关闭选择组合框中的项目的事件。

检索值

要检索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[]>();

你可以直接添加到组合框,不需要添加到列表。你使用的是整型。解析,会生成Format异常。

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