2016-06-29 2 views
0

状況:3つのテキストボックス、ボタン、およびコンボボックスがあります。すべてのTextBoxに何かを入力してボタンをトリガーすると、テキストボックスで書いた文字列をComboBoxでComboBoxItemとして選択することができます。 TextBoxからの文字列をリストに入れ、ComboBoxItemを正しいリストエントリに参照するという考えがあります。あるいは、これらの文字列を設定して取得するより効率的な方法がありますか? コードを書くのに役立つ人がいればいいですか?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"); 
    } 
+0

あなたのコンボボックスにtxBetrag、txMonateとtxZinsを追加しようとしていますか? – sr28

+0

@ sr28私はこれらの3つのtxをリストに保存しようとしています。そして、コンボボックスは、これらの3txの値を参照する新しい項目を作成します。 –

+0

あなたはアイテムとしてコンボボックスに3つのテキストボックステキストを追加します。私はそうですか? –

答えて

0

あなたは、単にあなたのコンボボックスにtxBetrag、txMonateとtxZinsを追加したい場合は、あなたがリストを必要としません。現時点では、リストを作成して何も追加せずに、コンボボックスに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)); 

次に、コンボボックスを移入するために、リストを使用します。

foreach(var item in abList) 
{ 
    comboBox.Items.Add(item); 
} 

UPDATEは

あなたのコメントをオフに基づいて、あなたが効果的に一緒に連結3つのテキストボックスの値であるコンボボックスでONEエントリーをしたいように思えます。あなたは3つの値を参照する1つのComboBoxアイテムが欲しいという事実に関する最後のコメントだ後

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

UPDATE 2

が、」doesnの:だから、このような何かを行うことができますそれを表示する、はいあなたはこれを行うことができます。

コンボボックスに重複したエントリがないと仮定すると、Dictionaryを使用して、リストを使用するのではなく値をエントリにマップすることができます。私はあなたのコンボボックスに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)}; 

これにより、後でマッピングを追加することができます。あなたは、このようなコンボボックスでリストを作成するために辞書を使用することができます。

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

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. 
    } 
} 

:あなたのような何かを行うことができますSelectedIndexChangedイベントであなたのマップされた値を取得するには値

を取得

次のようになります。

var valueComboMapping = Dictionary<string, List<int>>(); 

の代わりに:

var valueComboMapping = Dictionary<string, int[]>(); 
+0

それは私の問題ではありません。私はこれらの3つの値を単に1つの項目を選択するだけで呼びたいと思います。しかし、3つの値を1つのItemに参照することさえ可能かどうかは分かりません。なぜなら、これらの3つの値をどこかに保存する簡単な方法があるかどうか尋ねて、ボタンなどを押して呼び出します。 –

+0

これで3つの値で構成されたcomboBoxのエントリが1つだけになりますか? – sr28

+0

@SebDammer - 私の更新された答えを見てください。 – sr28

0

あなたは、コンボボックスに直接list.Youに追加する必要を追加することはできませんが、それはフォーマット例外が生成されます、int.Parseを使用しています。

private void button1_Click(object sender, EventArgs e) 
{ 
    comboBox1.Items.Add(betrag1.Text); 
    comboBox1.Items.Add(monate1.Text); 
    comboBox1.Items.Add(zins1.Text);      
} 
関連する問題