C # étiquettes de changement créées dans la classe publique de bouton de formulaire, cliquez

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

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!

Était-ce utile?

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[...][...]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top