簡體   English   中英

C#Windows窗體ComboBox麻煩

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM