情况:我有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");
}
答案 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);
}