[英]C# windows forms ComboBox trouble
為什么我在Combobox.SelectedValue中有null? SelectedItem不是null,它是一個匿名對象。 DisplayMember工作正常。
var item1 =
new
{
Name = "some phrase1",
Value = 0
};
var item2 =
new
{
Name = "some phrase2",
Value = 1
};
_cmb = new ComboBox();
_cmb.Items.Add(item1);
_cmb.Items.Add(item2);
_cmb.DisplayMember = "Name";
_cmb.ValueMember = "Value";
//.....
//onchange method
{
var nulled = _cmb.SelectedValue //why it's null???
}
顯然是因為組合框沒有選定的項目。
http://msdn.microsoft.com/zh-CN/library/system.windows.forms.combobox.selecteditem.aspx
作為當前選定項目的對象;如果沒有當前選定項目,則為null。
編輯; 我已經對其進行了測試,如果您選擇它,它將返回一個對象……您無法訪問其屬性,因為匿名對象,但是您可以使用反射或聲明一個類,接口或結構並使用它。
如果您得到null,則組合框沒有選定的項目。
不幸的是,ComboBox無法與匿名類型一起使用。
有一個在整個對象SelectedItem
屬性,但是你沒有直接訪問其屬性的方式,因為他們是在一個匿名類型。
您可以使用反射(但不應使用反射),也可以使用“鍵/名稱”和“值”屬性創建一個非匿名類型,然后改用該類型。
或者KeyValuePair<T, T>
如果只有鍵/名稱和值KeyValuePair<T, T>
則使用內置的KeyValuePair<T, T>
:
var item1 = new KeyValuePair<string, int>("some phrase1", 0);
var item2 = new KeyValuePair<string, int>("some phrase2", 1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.