我试图让我的组合框传递一个文本,然后传递一个值。但我无法获得价值。
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;
}
希望这可以帮助任何人。
谢谢大家的帮助!
答案 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(),我无法在没有更多上下文的情况下弄清楚它,您是如何尝试获取所选值的?