如何从另一个类访问winform组件?

我有一个带有一个按钮和两个标签的表单

我有一个名为myCounter的独立类

我希望myCounter类能够通过名为changeColor的方法访问表单中的标签。

如何在此课程中提供标签

表格

public partial class Form1 : Form { public Form1() { InitializeComponent(); } public Color colTurn { get { return lblp1Turn.BackColor; } set { lblp1Turn.BackColor = value; } } private void Form1_Load(object sender, EventArgs e) { } } 

class级

 class myCounter { private readonly Form1 Board; public myCounter(Form1 Board) { this.Board = Board; } public int turn = 0; public void changeColor() { if (turn == 0) { turn = 1; lbl //change color code here } } } 

所以看起来你总是将整个表格传递给你的第二课,所以我会做LightStriker所建议的。 为所有项目创建一个公共访问者,然后在其他课程中设置它。

 public partial class Form1 : Form { private myCounter _counterClass; public Form1() { InitializeComponent(); } public Label MyLabel1 { get {return mylabel1;} } public Label MyLabel2 { get {return mylabel2;} } private void Form1_Load(object sender, EventArgs e) { _counterClass = new myCounter(this); } protected void ButtonClick(object sender, EventArgs e) { _counterClass.changeColor(); } } 

然后在第二堂课中,您可以访问您的标签。

 class myCounter { private readonly Form1 Board; public myCounter(Form1 Board) { this.Board = Board; } public int turn = 0; public void changeColor() { if (turn == 0) { turn = 1; Board.MyLabel1.BackColor = Color.Red; Board.MyLabel2.BackColor = Color.White; } else { turn = 0; Board.MyLabel2.BackColor = Color.Yellow; Board.MyLabel1.BackColor = Color.White; } } } 

请记住,这是我在wiki标记编辑器中编写的代码,未经测试。 这应该适合你。

为此在表单上创建一个公共方法。

 public partial class Form1 : Form{ public void SetLabelColor(Color color){ mylabel.BackColor = color; } //... Other code }