如何从另一个类访问的winform组件? [英] how to access winform components from another class?

查看:158
本文介绍了如何从另一个类访问的winform组件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表格一个按钮和两个标签

和我有一个单独的类名为myCounter

我想要myCounter类能够访问标签的形式 通过调用方法changeColor ..

如何使现有的标签,在这个类

格式

 公共部分类Form1中:形态
    {
        公共Form1中()
        {
            的InitializeComponent();
        }

        众彩colTurn
        {
            {返回lblp1Turn.BackColor; }
            集合{lblp1Turn.BackColor =价值; }
        }

        私人无效Form1_Load的(对象发件人,EventArgs的)
        {

        }
    }
 

 类myCounter
{
    私人只读Fo​​rm1中板;
    公共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
{
    私人只读Fo​​rm1中板;
    公共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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆