C# 如何从另一个类访问winform组件?
我有一个带有一个按钮和两个标签的表单 我有一个单独的类叫做myCounter 我希望myCounter类能够访问表单中的标签 通过名为changeColor的方法 如何使标签在此类中可用 形式C# 如何从另一个类访问winform组件?,c#,.net,winforms,visual-studio-2010,class,C#,.net,Winforms,Visual Studio 2010,Class,我有一个带有一个按钮和两个标签的表单 我有一个单独的类叫做myCounter 我希望myCounter类能够访问表单中的标签 通过名为changeColor的方法 如何使标签在此类中可用 形式 public partial class Form1 : Form { public Form1() { InitializeComponent(); } public Color colTurn
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 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
}
}
}
为此在窗体上创建公共方法
public partial class Form1 : Form{
public void SetLabelColor(Color color){
mylabel.BackColor = color;
}
//... Other code
}
看来你把整个表格都交给了第二节课,所以我会照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标记编辑器中编写的代码,未经测试。这应该对你有用。我试过get和set。你能展示一下你试过的代码吗?你试过把这些项目传给你的第二堂课吗?@Jon B你对我的问题做了什么man@Tacit-我修复了一个小的代码格式问题,使您的问题更易于阅读。请不要生气。这是堆栈溢出工作原理的一部分。那么,如何使标签在类中可用,以及为什么使用分部class@Tacit:它只是从您的代码中复制的。分部类是因为它是一个表单,而您使用的是.designer.cs文件,其中一部分是cs文件背后的代码。@默认:另外,“使标签可用”没有任何意义。您声明要公开标签的颜色,这正是Oscar通过在类中使用方法提供的。我可以在类中使用方法来实现,但我希望在窗体类之外执行所有操作—无论您试图更改什么属性。你想改变背景色吗?你能告诉我什么叫changeColor方法吗?它将是form类中的一个按钮。。我是否需要myCounter类的实例,或者我如何调用此方法好的,那么此代码应该在第一次单击按钮时起作用,假设您在formLoad中创建并保持myCounterClass。除了changeColor方法之外,还有什么设置
转换
吗?我不确定我是否完全理解您试图实现的目标。你能告诉我你想要代码以最基本的形式做什么吗?