使用枚举绑定下拉框的选定值

3

我无法绑定下拉框的选定值。

 public void InitializePage()
 {          
    cbStatus.DataSource = Enum.GetValues(typeof(CourseStudentStatus));
 }

在我的构造函数中
 public EditCourseForm(int status)
 {
     InitializePage();                      
     cbStatus.SelectedText = Enum.GetName(
        typeof(CourseStudentStatus), status).ToString();         
 }

我也尝试过这样做:

cbStatus.SelectedValue = Status

但是我无法在下拉框中设置SelectedValue。

更新: 我的枚举类型:

 public enum CourseStudentStatus
{
    Active = 1,
    Completed = 2,
    TempStopped = 3,
    Stopped = 4,
}

您遇到了什么错误或问题? - gideon
如果我传递的状态为3,我希望cbStatus选择id = 3,但是它一直选择第一个项目。 - VeecoTech
它应该能够像这样做... cbStatus.SelectedValue = Status。但为什么它不行... 它显示错误“无法在具有空ValueMember的ListControl中设置SelectedValue。” - VeecoTech
也许你可以使用一些不同的东西,比如字符串数组而不是枚举类型? - gideon
@giddy:我已经更新了我的枚举格式的问题。 - VeecoTech
3个回答

8

问题已经解决。
cbStatus.SelectedItem = (CourseStudentStatus)status;

希望这能有所帮助。


1

你试过了吗?

public EditCourseForm(CourseStudentStatus status)
{
    InitializePage();            

    cbStatus.SelectedItem= status;
}

0
将您的InitializePage()函数代码更改为以下内容:

public void InitializePage() {

    cbStatus.DataTextField = Enum.GetName(typeof(CourseStudentStatus));

    cbStatus.DataValueField = Enum.GetValues(typeof(CourseStudentStatus));
}

已更新请尝试使用此方法。

var itemValues = Enum.GetValues(typeof(CourseStudentStatus)).Cast<CourseStudentStatus>().ToDictionary(obj => obj.ToString(), obj => obj.GetHashCode()).ToList();
        comboBox1.DisplayMember = "Key";
        comboBox1.ValueMember = "Value";
        comboBox1.DataSource = itemValues;

这里的 itemValues 是一种 List<KeyValuePair<string, int>> 类型。


组合框中没有DataTextField或DataValueField。 - VeecoTech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接