C#从表单按钮单击更改在公共类中创建的标签

C#从表单按钮单击更改在公共类中创建的标签,c#,class,button,label,public,C#,Class,Button,Label,Public,很难理解类以及为什么我不能访问某些对象。 如何修改代码以更改所有类/事件中的“map”(一组标签)属性 方法Draw2d()在主窗体上创建了两个标签,我希望在不同的事件中更改这些标签(在本例中单击按钮) 有人能帮我吗,或者只是提示我正确的方向 守则: 公共部分类Form1:Form { public void Draw2d() { const int spacing = 20; Label[][] map = new Label[5

很难理解类以及为什么我不能访问某些对象。 如何修改代码以更改所有类/事件中的“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
    }


}
{
公共空间
{  
常数int间距=20;
标签[][]映射=新标签[5][];
对于(int x=0;x<5;x++)
{  
map[x]=新标签[5];
对于(int y=0;y<5;y++)
{  
map[x][y]=新标签();
映射[x][y]。自动调整大小=真;
地图[x][y]。位置=新系统。绘图。点(x*间距,y*间距);
map[x][y].Name=“map”+x.ToString()+,“+y.ToString();
映射[x][y]。大小=新系统。绘图。大小(间距,间距);
图[x][y].TabIndex=0;
映射[x][y]。Text=“0”;
}  
this.Controls.AddRange(map[x]);
}  
}  
公共表格1()
{
初始化组件();
}  
public void Form1_Load(对象发送方、事件参数e)
{  
Draw2d();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{  

映射[0][0]。Text=“1”//必须将映射声明为属性(全局到类)

然后您可以在类内使用

this->map[...][...]
或者从外面像

objClass->map[...][...]

我猜是你加的

public Label[][] map;
但是忘记更改Draw2d的第二行

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


我刚刚尝试了您的代码,如果您更改了这两行代码,它就可以正常工作。如果这不是问题,您能告诉我您遇到了什么错误吗?

公共标签为Visual Studio提供了窍门,但我仍然不知道如何访问变量数组映射[]。映射[1][1]。Text=“1”编译但不起作用。objClass->map[]?我不明白当你说它不工作时,会发生什么?你能创建一个新的按钮来读取地图[0][0]属性并将其放在消息框中。您可以看到该属性是否被覆盖或显示不正确?马特:谢谢,它正在工作。这是我的失误。再次感谢!您为我省去了很多麻烦:)
Label[][] map = new Label[5][];
map = new Label[5][];