Pregunta

Tengo una matriz de objetos que estoy tratando de agregar a la colección Items de un control de cuadro combinado utilizando el método AddRange. El método toma una object[] pero cuando lo paso el nombre de la matriz que ha sido inicializado con algunos valores, se queja:

  

El partido mejor método sobrecargado para System.Windows.Forms.ComboBox.ObjectCollection.AddRange(object[]) tiene algunos argumentos no válidos.

La clase define los objetos de mi matriz es muy simple:

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

aquí es donde trato de llamar AddRange:

combobox1.Items.AddRange(actions);

y esa es la línea que se queja - ¿hay algún paso que me falta para ser capaz de hacer esto? funciona muy bien cuando estoy añadiendo un string[] sencilla

¿Fue útil?

Solución

Lo probé en un proyecto # .NET C prueba de la siguiente manera y funciona bien.  El código de ejemplo es la siguiente:

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

Por lo que necesita para decirnos dónde ha declarado objeto de las acciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top