传递文字& ComboBox中的值

时间:2014-05-23 09:09:30

标签: c# combobox listitem

我试图让我的组合框传递一个文本,然后传递一个值。但我无法获得价值。

DropDownList1.Items.Add(new ListItem("abc", 23));
DropDownList1.Items.Add(new ListItem("def", 56));

然后,当我在Combobox

中选择了其中任何一个时,我尝试获取值
 string text = DropDownList1.SelectedItem.ToString();
 string value = DropDownList1.SelectedValue.ToString();

 this.label5.Text = text + " with value: " + value;

这导致崩溃并出现以下错误代码: "未处理的类型' System.NullReferenceException'发生在WindowsFormsApplication1.exe

附加信息:未将对象引用设置为对象的实例。"

如果我只使用"文字"变量,一切都很好。

我错过了什么?

编辑:我知道我得到null,这将帮助我不崩溃,但为什么值不会传递到ComboBox /从ComboBox传递?先谢谢

解: 这就是我设法解决它的方法。

        var source = new Dictionary<string, int>();
        source.Add("College", 100);
        source.Add("T-shirt", 54);
        DropDownList1.DataSource = source.ToList();
        DropDownList1.DisplayMember = "Key";
        DropDownList1.ValueMember = "Value";

然后

    private void button1_Click_1(object sender, EventArgs e)
    {
        var selectedItem = DropDownList1.Text;
        if (DropDownList1.SelectedValue == null)
        {
            return;
        }
        string value = DropDownList1.SelectedValue.ToString();
        //[etc…]

        this.label5.Text = "Cloth:" + selectedItem + " costs " + value;
    }

希望这可以帮助任何人。

谢谢大家的帮助!

6 个答案:

答案 0 :(得分:0)

我很久以前就这样做了。但我认为你需要像这样使用它:

var selectedItem = DropDownList1.SelectedItem;
if (selectedItem != null)
{
    string text = selectedItem.Text;
    string value = selectedItem.Value;
}

答案 1 :(得分:0)

由于你还没有说过抛出异常的哪一行,所以在黑暗中它是一个镜头。但是:

string value = DropDownList1.SelectedValue.ToString();

DropDownList1.SelectedValue可能为null,在这种情况下尝试在其上调用ToString()会导致NullReferenceException。尝试:

if (DropDownList1.SelectedValue == null)
   return;

var value = DropDownList1.SelectedValue;
this.label5.Text = String.Format("{0} with value: {1}", text, value);
//[etc…]

<强>更新

假设您的组合框不是数据绑定的,因为您要在内存中添加项目,您还需要设置默认的选定值。您需要在表单上的Items集合中找到对象的索引,然后将SelectedIndex属性设置为适当的索引。

DropDownList1.Items.Add(new ListItem("abc", 23));
DropDownList1.Items.Add(new ListItem("def", 56));
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf("abc");

请注意,如果项目不在集合中,IndexOf函数可能会抛出ArgumentException

答案 2 :(得分:0)

您可能需要在使用之前绑定此数据,请尝试:

myDropdown.DataBind()

在添加您的商品之后,它可能会解决它,我认为您可以找到大量有关它的教程,只需谷歌

答案 3 :(得分:0)

// Check whether your combobox is selected or not 

 if (DropDownList1.SelectedIndex != -1)
    {
       string text = DropDownList1.SelectedItem.ToString();
       string value = DropDownList1.SelectedValue.ToString();
       this.label5.Text = text + " with value: " + value;
    }
    else
    {
    // message to select option
    }

请注意 - 我们在Windows应用程序中有ComboBox,在Asp.net中有下拉列表。

答案 4 :(得分:0)

您应该添加一个检查以检查i = null,如下所示:

        label1.text = DropDownList1.selectedItem.Value != null ? DropDownList1.selectedItem.Text + " with value: " + DropDownList1.selectedItem.Value : label1.text;

如果i!= null;

,它应该检查它

您收到错误是因为您无法使用+

打开一个空变量

答案 5 :(得分:0)

您可能需要在使用之前绑定此数据,请尝试:

myDropdown.DataBind()

在添加您的商品之后,它可能会解决它,我认为您可以找到大量有关它的教程,只需谷歌

我认为可能没有选择任何项目,并且您在空值中调用.ToString(),我无法在没有更多上下文的情况下弄清楚它,您是如何尝试获取所选值的?