C # изменить ярлыки, созданные в общедоступном классе от нажатия кнопки формы - PullRequest
1 голос
/ 24 января 2010

Трудно понять классы и почему я не могу получить доступ к определенному объекту. Как я могу изменить код, чтобы я мог изменить свойства «map» (которые представляют собой набор меток) во всех моих классах / событиях?

Метод Draw2d () создает пару ярлыков в главной форме, которые я хочу изменить для различных событий (щелчок кнопки в этом примере).

Может ли кто-нибудь мне помочь или просто намекнуть мне в правильном направлении.

Код:

публичный частичный класс 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
    }


}

Спасибо!

Ответы [ 2 ]

2 голосов
/ 24 января 2010

вы должны объявить карту как свойство (глобальное для класса)

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

тогда вы можете использовать внутри класса, как

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

или снаружи как

objClass->map[...][...]
1 голос
/ 24 января 2010

Полагаю, вы добавили

public Label[][] map;

но забыл изменить вторую строку Draw2d с

Label[][] map = new Label[5][];

до

map = new Label[5][];

Я только что попробовал ваш код, и он отлично работает, если вы измените эти две строки. Если это не проблема, не могли бы вы сказать, какую ошибку вы получаете, пожалуйста?

...