引用List委托给ComboBoxItem

时间:2016-06-29 07:53:09

标签: c# list combobox reference

情况:我有3个TextBox,一个按钮和一个ComboBox。当我在每个TextBox中输入内容并触发按钮时,我希望我在TextBox中编写的字符串可以在ComboBox中作为ComboBoxItem选择。我已经想到将TextBoxes中的字符串放入列表中,并将ComboBoxItem引用到正确的list-entrys。或者是否有更有效的方法来设置和获取这些字符串? 如果有人可以帮我写代码,那会很好。

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

2 个答案:

答案 0 :(得分:0)

如果您只是想将txBetrag,txMonate和txZins添加到组合框中,那么您不需要列表。目前你正在创建一个列表,不添加任何内容,然后只需在你的comboBox中添加一个条目(甚至不在列表中)。

要添加商品,请执行以下操作:

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中输入 ONE 条目,这实际上是连接在一起的3个文本框值。所以你可以这样做:

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

更新2

关于您想要1个comboBox项目引用3个值,但不显示它们的事实,关于您的最后评论,是的,您可以这样做。

假设您在comboBox中没有重复条目,您可以使用Dictionary将值映射到条目而不是使用列表。我假设你最后在你的comboBox中有超过1个条目,否则有一个组合框有点无意义。

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

答案 1 :(得分:0)

  

你可以直接添加到combobox,不需要添加到list.You正在使用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);                    
 }