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

标签 c# .net winforms visual-studio-2010 class

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

我有一个单独的类叫做 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)访问器,然后将其设置在您的其他类中。

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 标记编辑器中编写的代码,未经测试。不过,这应该对您有用。

关于c# - 如何从另一个类访问winform组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13233431/

相关文章:

c# - .NET 5.0 打开选择文件夹对话框

c# - 在文本框中输入文本时按钮出现问题

c# - 使用子域时使用 EADDRINUSE

c# - 我应该如何将带有文本后缀的数字转换为 C# 中的整数?

javascript - C# 等线程语言上的线程与异步?

c# - 使用 autofac 3.1.1 进行属性注入(inject)

.net - CREATE ASSEMBLY 失败,返回 "Unable to resolve token"

c# - Multi-Tenancy 应用程序 - 自动创建数据库

c# - 日期格式 yyyymmdd 到 yyyy-mm-dd

c# - 如何将项目从一个菜单移动到另一个菜单?