C#从表单按钮单击更改在公共类中创建的标签
很难理解类以及为什么我不能访问某些对象。 如何修改代码以更改所有类/事件中的“map”(一组标签)属性 方法Draw2d()在主窗体上创建了两个标签,我希望在不同的事件中更改这些标签(在本例中单击按钮) 有人能帮我吗,或者只是提示我正确的方向 守则: 公共部分类Form1:FormC#从表单按钮单击更改在公共类中创建的标签,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
{
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][];