2016-04-01 17 views
0

Ich habe das gleiche Problem, das hier und in den MS-Foren viel gefragt wurde - Ich habe ein Combobox-Steuerelement und ein String-Array, also ich die zuweisen String-Array auf die Combobox inDie Variable ist entweder nicht deklariert oder wurde nicht zugewiesen und das Neuaufbau funktioniert nicht

Form1.Designer.cs

private void InitializeComponent() 
{ 
... 
this.ComboBox_Target_0.Items.AddRange(Ranks); 
... 
} 

das Array, wird sich wie so erklärt:

string[] Ranks = { "Rank 1", "Rank 2", "Rank 3", "Rank 4", "Rank 5", "Rank 6", "Rank 7", "Rank 8", "Rank 9", "Rank 10", "Rank 11", "Rank 12" }; 

Wenn ich meine Lösung bauen die Form läuft gut und Die Combobox hat alle Elemente aufgelistet und es funktioniert gut. Der Formulardesigner weigert sich jedoch zu sagen: "Die Variable Ränge ist entweder nicht deklariert oder wurde nie zugewiesen".

Ich habe die anderen Fragen über das gleiche Problem gesehen und habe bereits ihre (einzige) Lösung versucht - um die Lösung neu zu erstellen, schließen VS und öffnen Sie es wieder. Aber das hat nicht geholfen. Ich habe versucht, die String-Array in "InitializeComponent()" und "public Form1()", Wiederaufbau und etc. jedes Mal. Aber es hat sich nicht für mich festgelegt.

Lassen Sie mich nur überprüfen - die Wahl von "Ignorieren und Fortfahren" würde in diesem Fall nichts gefährden, oder?

+0

Welche Version von Visual Studio ist das? – dcreight

+0

@dcreight, 2015 – mathgenius

Antwort

0

Ich stimme zu, dass Sie die Designerdatei nicht ändern sollten. Wenn es einen Grund gibt, dass Sie diese Werte zur Entwurfszeit benötigen, und Sie den Editor nicht verwenden möchten, ist der einzige Weg, wie ich es ohne einen Fehler funktionierte, an die Spitze der InitializeComponent Methode zu setzen:

string[] Ranks = new string[] { "Rank 1", "Rank 2", "Rank 3", "Rank 4", "Rank 5", "Rank 6", "Rank 7", "Rank 8", "Rank 9", "Rank 10", "Rank 11", "Rank 12" }; 

Ich habe new string[] zu der Deklaration hinzugefügt. Dies beruht darauf, wie die Editor die Liste zur Entwurfszeit erstellen:

this.ComboBox_Target_0.Items.AddRange(new object[] {... 

Nach der Definition Ranks so, wird Ihre Linie arbeiten:

this.ComboBox_Target_0.Items.AddRange(Ranks); 

Wenn Sie nur die Werte zur Laufzeit benötigen, ist es besser so (oder eine Variante davon):

public partial class Form1 : Form 
{ 
    string[] Ranks = { "Rank 1", "Rank 2", "Rank 3", "Rank 4", "Rank 5", "Rank 6", "Rank 7", "Rank 8", "Rank 9", "Rank 10", "Rank 11", "Rank 12" }; 

    public Form1() 
    { 
     InitializeComponent(); 
     this.ComboBox_Target_0.Items.AddRange(Ranks); 
    } 
} 
+0

Danke, das hat funktioniert! Ich mache es so, weil es viele Comboboxen gibt, eigentlich möchte ich die gleichen Elemente verwenden und ich möchte in der Lage sein, den Inhalt des Arrays in Zukunft einfach zu bearbeiten, wenn es sein muss. Ich habe keine Ahnung, was es bedeutet, die Werte nur zur Laufzeit zu benötigen und nicht. – mathgenius

+0

Es bedeutet einfach, dass wenn Sie nur das Formular entwerfen ("Entwurfsmodus") und die Werte nicht benötigen, bis die Anwendung ausgeführt wird ("Laufzeit"), ist es besser, die Laufzeitmethode zu verwenden. Auf diese Weise stören Sie nicht die Designer-Datei. Sie können immer noch mehrere Felder mit dem Bereich füllen. –

Verwandte Themen