Pergunta

Eu tenho uma matriz de objetos que eu estou tentando adicionar à coleção de itens de um controle caixa de combinação usando o método AddRange. O método leva uma object[] mas quando eu passar o nome da matriz que foi intialized com alguns valores, ele reclama:

A melhor correspondência método sobrecarregado para System.Windows.Forms.ComboBox.ObjectCollection.AddRange(object[]) tem alguns argumentos inválidos.

A classe que define os objetos em minha matriz é muito simples:

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

Este é o lugar onde eu tento AddRange chamada:

combobox1.Items.AddRange(actions);

e essa é a linha que ele está reclamando - há algum passo que estou em falta para ser capaz de fazer isso? ele funciona muito bem quando estou apenas adicionando um simples string[]

Foi útil?

Solução

Eu tentei sair em um projeto de teste # .NET C como abaixo e ele funciona muito bem. O código de exemplo é como abaixo:

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

Então, você precisa nos dizer onde você declarou que as ações objeto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top