1

私のプロジェクトでは、ライブラリを使用しており、事前定義されたオプションのリストがあります。コンボボックスから選択できるようにしたいので、毎回ソースを編集する必要はありません。

メイン コード: プレーヤーを検索します。レベルは、ゴールド、シルバー、ブロンズ、またはすべてのいずれかに設定できます。それをコンボボックスから選べるようにしたいです。ボタンをクリックしてこのコードを実行すると、最後のエラーが表示されます。

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,
};

コンボボックスのコード:

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 がユーザー コードによって処理されていないというエラーが発生します。オブジェクト参照がオブジェクトのインスタンスに設定されていません。

これを機能させるには本当に助けが必要です。

すべてのヘルプは本当に感謝しています。

ありがとう、

ジャック。

4

2 に答える 2

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 
        };
}
于 2013-08-21T06:01:19.283 に答える
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,
     };
}
于 2013-08-21T06:07:01.240 に答える