[英]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.