可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
i have a form with one button and two labels
and i have a separate class called myCounter
i want the myCounter class to be able to access the labels in the form through a method called changeColor..
how can make the labels available in this class
the form
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) { } }
the 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 } } }
回答1:
So it looks like you're passing the whole form into your second class anyway, So I'd do what LightStriker suggested. Make a public accessor for all of your items and then set it in your other class.
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(); } }
Then in your second class you have access to your Label.
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; } } }
Keep in mind this is code I have written in a wiki markup editor and is untested. This SHOULD work for you though.
回答2:
Create a public method on your form for this.
public partial class Form1 : Form{ public void SetLabelColor(Color color){ mylabel.BackColor = color; } //... Other code }