获取参数的comboBox值

时间:2013-08-21 05:47:15

标签: c#

对于我的项目,我正在使用一个库,它有一个预定义选项列表。我希望能够从comboBox中进行选择,因此我不需要每次都编辑源代码。

主要代码:搜索播放器。等级可以设置为金牌,银牌,铜牌或全部。我希望能够从comboBox中选择它。当我单击按钮运行此代码时,最后的错误显示。

var searchRequest = new SearchRequest();
var searchParameters = new PlayerSearchParameters
{
    Page = 1,
    Level = comboBox1.SelectedItem == null ? Level.All : (Level)(comboBox1.SelectedItem as ComboboxItem).Value,
    //usually set like this Level - Level.Gold,
};

comboBox代码:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    foreach (Level level in Enum.GetValues(typeof(Level)))
    {
        ComboboxItem item = new ComboboxItem();
        item.Text = level.ToString();
        item.Value = level;
        comboBox1.Items.Add(item);
    }
}

ComboboxItem代码:

public class ComboboxItem
{
    public string Text { get; set; }
    public object Value { get; set; }

    public override string ToString()
    {
        return Text;
    }
}

我认为所有这些都可行,但它会出错,说NullReferenchExeption被用户代码无法使用。和Object引用未设置为对象的实例。

我真的需要帮助才能让它发挥作用。

非常感谢所有帮助。

谢谢,

杰克。

2 个答案:

答案 0 :(得分:1)

您可以直接从枚举comboBox1绑定

comboBox1.DataSource  =Enum.GetNames(typeof(Level));

然后如果你需要选择枚举

Level level ; 
if( Enum.TryParse<Level>(comboBox1.SelectedValue.ToString(), out level))
{ 
        var searchParameters = new PlayerSearchParameters
        {
            Page = 1,
            Level =level 
        };
}

答案 1 :(得分:0)

运行您在此处发布的内容后 - 我收到NullReferenchExeption的唯一时间是在Combobox尚未选择任何内容时单击搜索按钮。

您需要先检查null。像这样......

if (comboBox1.SelectedItem != null)
{
     var searchRequest = new SearchRequest();
     var searchParameters = new PlayerSearchParameters
     {
          Page = 1,
          Level = (Level)(comboBox1.SelectedItem as ComboboxItem).Value,
          //usually set like this Level - Level.Gold,
     };
}