C # étiquettes de changement créées dans la classe publique de bouton de formulaire, cliquez
Question
Avoir du mal à comprendre les classes et pourquoi je ne peux pas accéder à certains objets. Comment puis-je modifier le code pour que je puisse modifier les propriétés « carte » (qui est un tas d'étiquettes) dans toutes mes classes / événements?
La méthode Draw2d () crée deux étiquettes sur la principale forme que je souhaite changer sur différents événements (clic bouton dans cet exemple).
Quelqu'un peut-il me aider, ou tout simplement me laisser entendre dans la bonne direction.
Le code:
public partial class Form1: formulaire
{
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
}
}
Merci!
La solution
Je suppose que vous avez ajouté
public Label[][] map;
mais a oublié de modifier la deuxième ligne de Draw2d
Label[][] map = new Label[5][];
à
map = new Label[5][];
Je viens d'essayer votre code, et il fonctionne très bien si vous changez ces deux lignes. Si ce n'est pas le problème, pourriez-vous dire quelle erreur que vous obtenez, s'il vous plaît?
Autres conseils
vous devez déclarer la carte en tant que propriété (classe mondiale)
public partial class Form1 : Form {
public Label[][] map;
....
}
vous pouvez utiliser à l'intérieur comme classe
this->map[...][...]
ou de l'extérieur comme
objClass->map[...][...]