2017-09-13 13 views
0

だからCombo Boxがあり、KeyValuePair<int, decimal>を使用して作成したリストがあります。ドロップダウンテキストボックスからキーを選択すると、キーに応じて値を表示するように選択したテキストボックスが必要になります。コンボボックスドロップダウンから選択した後にテキストボックスに値が表示されない

関連するコード:このコードの場合

// Make a list of truck weight and MPG. 
List<KeyValuePair<int, decimal>> weightMPG = new List<KeyValuePair<int, decimal>>(); 

private void mainForm_Load(object sender, EventArgs e) 
{ 
    decimal k = 7; 
    for (int i = 20000; i < 40000; i+=1000){ 
     weightMPG.Add(new KeyValuePair<int, decimal>(i, k)); 
     k -= 0.1m; 
    } 
    for (int i = 40000; i < 45000; i+=1000){ 
     weightMPG.Add(new KeyValuePair<int, decimal>(i, 5)); 
    } 
    weightMPG.Add(new KeyValuePair<int, decimal>(46000, 4.9m)); 
    weightMPG.Add(new KeyValuePair<int, decimal>(47000, 4.8m)); 
    weightMPG.Add(new KeyValuePair<int, decimal>(48000, 4.7m)); 
    truckWeight2.DataSource = weightMPG; 
    truckWeight2.ValueMember = "Value"; 
    truckWeight2.DisplayMember = "Key"; 
} 

private void truckWeight2_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    truckMPG2.Text = truckWeight2.ValueMember; 
} 

私がコントロールをクリックしたとき、それは20,000〜48,000にドロップダウンを示しています。しかし、1つを選択すると、テキストボックス(truckMPG2)は値を反映するように更新されず、常に単語「値」が表示されます。

私はこのコードを作るときに他のスタックオーバーフローの答えを見たので、どこが間違っているのか分かりません。あなたは.ValueMemberプロパティを読んでいる

答えて

4

あなたは、具体的リテラル文字列に設定
truckMPG2.Text = truckWeight2.ValueMember; 

truckWeight2.ValueMember = "Value"; 

あなたの代わりに.SelectedValueプロパティをしたいように聞こえる:

truckMPG2.Text = truckWeight2.SelectedValue; 

または、型が一致しないが値が直接あなたが値に.ToString()を追加する必要があるかもしれません、文字列として表され:

truckMPG2.Text = truckWeight2.SelectedValue.ToString(); 
+0

多分それはそれをクリアしますが、私は基本的に対応する進数を表示するテキストボックスをしたいです。例えば20,000→7; 21,000→6.9など私はValueMemberをValueに設定する理由は分かりませんが、私はただの答えから試してみました。 – Annabelle

+0

@Annabelle: '.ValueMember'を' 'Value ''に設定すると、リストには正しい値がまったく表示されません。選択を変更したときに '.SelectedValue'とは何ですか? Stack Overflowの答えからコードをコピー/ペーストしないでください。具体的には、実行する操作を実行する文を記述します。あなたが何らかの文が何をしているのかわからない場合は、ドキュメントを調べてデバッガでそれを試して、それが何であるかを見てください。 – David

+0

リスト自体に正しいメンバー(キー)が表示されます。しかし、値を必要とするテキストボックス(たとえば、7、6.9など)は単に「値」という単語を表示します。 '.SelectedValue; 'を使用しているときにも、単にキャストエラーが出ます。 – Annabelle

関連する問題