質問

私は、AddRangeメソッドを使用して、コンボボックスコントロールのItemsコレクションに追加しようとしているオブジェクトの配列を持っています。この方法は、object[]かかりますが、私はそれにいくつかの値でintializedされているアレイの名前を渡すとき、それは文句を言います:

  

System.Windows.Forms.ComboBox.ObjectCollection.AddRange(object[])ための最良のオーバーロードされたメソッドの試合では、いくつかの無効な引数を持っています。

私の配列内のオブジェクトを定義するクラスは非常に単純です。

public class Action
{
   public string name;
   public int value;
   public override string ToString()
   {
      return name;
   }
}

and my array is declared such:

    public Action[] actions = new Action[] {
    new Action() { name = "foo", value = 1 },
    new Action() { name = "bar", value = 2 },
    new Action() { name = "foobar", value = 3 }
};
私はAddRangeを呼び出すようにしてみてください。ここで、

これは、次のとおりです。

combobox1.Items.AddRange(actions);

とそれはそれは不満だラインだ - 私はこれを行うことができるように欠けているいくつかのステップがありますか?私は単純なstring[]を追加しているとき、それが正常に動作します。

役に立ちましたか?

解決

私は以下のように.NET C#テストプロジェクトでそれを試してみた&それが正常に動作します。  サンプルコードは以下の通りである:

 public partial class Form1 : Form
    {
        public Action[] actions = new Action[]
            {
new Action() { name = "foo", value = 1 },
new Action() { name = "bar", value = 2 },
new Action() { name = "foobar", value = 3 }
            };

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.AddRange(actions);
        }

    }

    public class Action
    {
        public string name;
        public int value;
        public override string ToString()
        {
            return name;
        }
    }

だから、あなたはアクションオブジェクト場所を宣言している私たちに指示する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top