对于我的项目,我正在使用一个库,它有一个预定义选项列表。我希望能够从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引用未设置为对象的实例。
我真的需要帮助才能让它发挥作用。
非常感谢所有帮助。
谢谢,
杰克。
答案 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,
};
}