Domanda

Ho un array di oggetti che sto cercando di aggiungere alla collezione Items di un controllo casella combinata con il metodo AddRange. Il metodo richiede un object[] ma quando lo passo il nome della matrice che è stata inizializzata con alcuni valori, si lamenta:

  

La partita metodo migliore overload per System.Windows.Forms.ComboBox.ObjectCollection.AddRange(object[]) ha alcuni argomenti non validi.

La classe che definisce gli oggetti del mio array è molto semplice:

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

questo è dove provo a chiamare AddRange:

combobox1.Items.AddRange(actions);

e questa è la linea che si tratta di lamentarsi - c'è qualche passo mi manca per essere in grado di farlo? funziona benissimo quando sto solo l'aggiunta di un semplice string[]

È stato utile?

Soluzione

L'ho provato in un progetto di prova # .NET C come qui di seguito e funziona benissimo.  Il codice di esempio è il seguente:

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

Quindi è necessario dirci dove avete dichiarato le azioni oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top