C # Änderungskennzeichen in öffentlicher Klasse von Formular-Schaltfläche klicken erstellt
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!
Lösung
Meine Vermutung ist, dass Sie hinzugefügt
public Label[][] map;
, aber vergessen, die zweite Zeile von Draw2d von
zu ändernLabel[][] 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[...][...]