簡體   English   中英

在C#Combobox中設置所選項目

[英]Setting selected item in C# Combobox

我到處都查了這個問題,卻找不到答案。 我有一個枚舉值的組合框,它應該從類屬性中獲取其初始值。 請記住,它不是數據綁定到屬性。 當我使用當前所選項設置類屬性時,沒有問題,但是當我嘗試設置初始值時,組合框只是空白。

我調試了它,似乎正確設置了SelectedItem,但它沒有在視覺上更新當前項目。 這是我填充組合框的代碼:

foreach(Gender gender in Enum.GetValues(typeof(Gender)))
{
    genderComboBox.Items.Add(gender);
}

我用它設置它:

genderComboBox.SelectedItem = person.Gender;

我之前也嘗試過這樣做:

genderComboBox.DataSource = Enum.GetValues(typeof(Gender));

什么都行不通。 我也嘗試將enum屬性轉換為int並使用它來設置SelectedIndex。 如果我添加斷點並檢查值,一切看起來都應該有效,但事實並非如此。 我真的很困惑。

我好像已經弄清楚了。

SelectedItem的默認值是Gender.Male ,與Gender.Male的默認值person.Gender 由於SelectedItem已經等於Gender.Male ,因此它無法直觀地更新控件並將其留空。 當我將SelectedItem設置為null ,然后將其設置為初始值時,它突然起作用。

我已經使用您的代碼進行了測試,但有一點不同。 它運行沒有問題。 而不是采取從一個人的屬性的值Gender ,我分配一個Gender直接常數:

genderComboBox.SelectedItem = Gender.Male;

這讓我假設屬性person.Gender沒有有效的Gender值。 設置斷點為genderComboBox.SelectedItem = person.Gender; 並觀察person.Gender的價值。 這是正確的嗎?

注意:如果您像這樣聲明Gender

enum Gender
{
    Male = 1
    Female =2
}

...然后, Gender 0的默認值不是有效的Gender值。 無論是增值None = 0enum或財產初始化person到一個有效的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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