C # Änderungskennzeichen in öffentlicher Klasse von Formular-Schaltfläche klicken erstellt

StackOverflow https://stackoverflow.com/questions/2125050

Frage

Mit harter Zeit Verständnis Klassen und warum ich nicht bestimmtes Objekt zugreifen kann. Wie kann ich den Code ändern, so kann ich „Karte“ ändern Eigenschaften in allen meinen Klassen / Ereignisse (die eine Reihe von Etiketten ist)?

Das Verfahren Draw2d () erzeugt ein paar Etiketten auf dem Hauptformular, dass ich bei verschiedenen Ereignissen ändern möchten (Schaltfläche klicken in diesem Beispiel).

Kann jemand mir helfen, oder einfach nur mich deuten in die richtige Richtung.

Der Code:

public partial class Form1: Form

{  
    public void Draw2d()  
    {  
        const int spacing = 20;  
        Label[][] map = new Label[5][];  
        for (int x = 0; x < 5; x++) 
        {  
            map[x] = new Label[5];  
            for (int y = 0; y < 5; y++)  
            {  
                map[x][y] = new Label();  
                map[x][y].AutoSize = true;  
                map[x][y].Location = new System.Drawing.Point(x * spacing, y * spacing);  
                map[x][y].Name = "map" + x.ToString() + "," + y.ToString();  
                map[x][y].Size = new System.Drawing.Size(spacing, spacing);  
                map[x][y].TabIndex = 0;  
                map[x][y].Text = "0";  
            }  
            this.Controls.AddRange(map[x]);  
        }  
    }  

    public Form1()  
    {
        InitializeComponent();  
    }  

    public void Form1_Load(object sender, EventArgs e)  
    {  
        Draw2d();  
    }

    private void button1_Click(object sender, EventArgs e)
    {  
        map[0][0].Text = "1";               //        <-- Doesn't work
    }


}

Danke!

War es hilfreich?

Lösung

Meine Vermutung ist, dass Sie hinzugefügt

public Label[][] map;

, aber vergessen, die zweite Zeile von Draw2d von

zu ändern
Label[][] map = new Label[5][];

map = new Label[5][];

ich Ihren Code gerade versucht, und es funktioniert gut, wenn Sie diese beiden Zeilen ändern. Wenn das nicht das Problem, könnte man sagen, was Fehler Sie bekommen, bitte?

Andere Tipps

Sie haben die Karte als Eigenschaft (global zu Klasse) erklären

public partial class Form1 : Form {
   public Label[][] map;
   ....
}

, dann können Sie innerhalb der Klasse verwenden wie

this->map[...][...]

oder von außen wie

objClass->map[...][...]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top