将列表项引用到组合框项
本文关键字:组合 引用 列表 | 更新日期: 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);
}