从 ComboBox 下拉列表中选择后文本框不显示值
Textbox not displaying value after selecting from ComboBox Dropdown
所以我有一个 Combo Box
并且我有一个使用 KeyValuePair<int, decimal>
制作的列表。当我从下拉文本框中 select 时,我希望我 selected 的文本框根据键显示值。
相关代码:
// 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 的下拉列表。但是,当我 select 一个时,文本框 (truckMPG2
) 不会更新以反映该值,而只是始终显示单词 "Value."
我在编写这段代码时查看了其他堆栈溢出答案,所以我不确定我哪里出错了。
您正在阅读 .ValueMember
属性:
truckMPG2.Text = truckWeight2.ValueMember;
其中您专门设置为文字字符串:
truckWeight2.ValueMember = "Value";
听起来您想要 .SelectedValue
属性:
truckMPG2.Text = truckWeight2.SelectedValue;
或者,如果类型不匹配但值可以直接表示为字符串,则可能需要将 .ToString()
附加到值:
truckMPG2.Text = truckWeight2.SelectedValue.ToString();
所以我有一个 Combo Box
并且我有一个使用 KeyValuePair<int, decimal>
制作的列表。当我从下拉文本框中 select 时,我希望我 selected 的文本框根据键显示值。
相关代码:
// 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 的下拉列表。但是,当我 select 一个时,文本框 (truckMPG2
) 不会更新以反映该值,而只是始终显示单词 "Value."
我在编写这段代码时查看了其他堆栈溢出答案,所以我不确定我哪里出错了。
您正在阅读 .ValueMember
属性:
truckMPG2.Text = truckWeight2.ValueMember;
其中您专门设置为文字字符串:
truckWeight2.ValueMember = "Value";
听起来您想要 .SelectedValue
属性:
truckMPG2.Text = truckWeight2.SelectedValue;
或者,如果类型不匹配但值可以直接表示为字符串,则可能需要将 .ToString()
附加到值:
truckMPG2.Text = truckWeight2.SelectedValue.ToString();