【问题标题】:Textbox not displaying value after selecting from ComboBox Dropdown从组合框下拉菜单中选择后文本框不显示值
【发布时间】:2018-02-22 16:12:52
【问题描述】:

所以我有一个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 的下拉列表。但是,当我选择一个时,文本框 (truckMPG2) 不会更新以反映该值,而是始终显示单词“Value”。

我在编写此代码时查看了其他堆栈溢出答案,所以我不确定我哪里出错了。

【问题讨论】:

    标签: c# combobox textbox datasource dropdown


    【解决方案1】:

    您正在阅读.ValueMember 属性:

    truckMPG2.Text = truckWeight2.ValueMember;
    

    您专门设置为文字字符串:

    truckWeight2.ValueMember = "Value";
    

    听起来你想要.SelectedValue 属性:

    truckMPG2.Text = truckWeight2.SelectedValue;
    

    或者,如果类型不匹配但值可以直接表示为字符串,则可能需要将.ToString()附加到值:

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

    【讨论】:

    • 也许它会清除它,但我基本上希望文本框显示相应的十进制数字。例如20,000 -> 7; 21,000->6.9 等。我不知道为什么我将 ValueMember 设置为 Value,我只是从 SO 答案中尝试一些东西。
    • @Annabelle:等一下,当您将.ValueMember 设置为"Value" 时,列表根本不会显示正确的值吗?当您更改选择时,.SelectedValue 是什么?不要只是从 Stack Overflow 的答案中复制/粘贴代码。专门编写执行您想要执行的操作的语句。如果您不确定任何给定语句的作用,请查看文档并在调试器中进行试验以查看其作用。
    • 列表本身显示正确的成员(键)。但是,我想要值的文本框(例如 7、6.9..等)只显示单词“Value”。同样在使用.SelectedValue; 时,我只是得到一个转换错误。
    • @Annabelle:错误是什么? .SelectedValue 的类型是什么?它有什么价值?您可以简单地将.ToString() 放在它的末尾吗?对您遇到的问题具体
    • 是的,我可以。谢谢你。不知道为什么我没有想到。
    猜你喜欢
    • 1970-01-01
    • 2018-04-04
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多