如何从另一个类访问的winform组件? [英] how to access winform components from another class?
问题描述
我有一个表格一个按钮和两个标签
和我有一个单独的类名为myCounter
我想要myCounter类能够访问标签的形式 通过调用方法changeColor ..
如何使现有的标签,在这个类
格式
公共部分类Form1中:形态
{
公共Form1中()
{
的InitializeComponent();
}
众彩colTurn
{
{返回lblp1Turn.BackColor; }
集合{lblp1Turn.BackColor =价值; }
}
私人无效Form1_Load的(对象发件人,EventArgs的)
{
}
}
类
类myCounter
{
私人只读Form1中板;
公共myCounter(Form1中板)
{
this.Board =董事会;
}
公众诠释转= 0;
公共无效changeColor()
{
如果(转== 0)
{
转= 1;
LBL
//改变颜色code在这里
}
}
}
所以看起来你传递整个表单到你的第二个类,无论如何,所以我会做什么LightStriker建议。作出公开访问您的所有项目,然后将其设置在其他类。
公共部分类Form1中:形态
{
私人myCounter _counterClass;
公共Form1中()
{
的InitializeComponent();
}
公共标签MyLabel1
{
{返回mylabel1;}
}
公共标签MyLabel2
{
{返回mylabel2;}
}
私人无效Form1_Load的(对象发件人,EventArgs的)
{
_counterClass =新myCounter(本);
}
保护无效ButtonClick(对象发件人,EventArgs的)
{
_counterClass.changeColor();
}
}
然后在你的第二类,你可以访问你的标签。
类myCounter
{
私人只读Form1中板;
公共myCounter(Form1中板)
{
this.Board =董事会;
}
公众诠释转= 0;
公共无效changeColor()
{
如果(转== 0)
{
转= 1;
Board.MyLabel1.BackColor = Color.Red;
Board.MyLabel2.BackColor = Color.White;
}
其他
{
转= 0;
Board.MyLabel2.BackColor = Color.Yellow;
Board.MyLabel1.BackColor = Color.White;
}
}
}
请记住,这是code我已经写了维基标记编辑器,是未经检验的。这应该给你,虽然工作。
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
}
}
}
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.
这篇关于如何从另一个类访问的winform组件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!