设置面板';s类的背景色,Windows窗体-C#

设置面板';s类的背景色,Windows窗体-C#,c#,winforms,class,C#,Winforms,Class,我已经从一个类设置面板的背景色 该类不在面板的形式内,而是作为一个侧类 主窗体上的面板称为pnlCanvas 我不知道我错过了什么。如果我在主窗体中有值或方法,那么我可以从类中访问这些值。但是,专家组似乎采取了不同的行动 试试这个: 使其成为Form1的成员 Public void RedPanel() { this.pnlCanvas.BackColor = Color.Red; } 将RedPanel更改为:this.pnlCanvas.Back

我已经从一个类设置面板的背景色

该类不在面板的形式内,而是作为一个侧类

主窗体上的面板称为pnlCanvas

我不知道我错过了什么。如果我在主窗体中有值或方法,那么我可以从类中访问这些值。但是,专家组似乎采取了不同的行动



试试这个: 使其成为Form1的成员

    Public void RedPanel()
    {
        this.pnlCanvas.BackColor = Color.Red;
    }

将RedPanel更改为:this.pnlCanvas.BackColor=Color.Red;我看到你编辑你的帖子来提供更多的信息,我会试一试。如果我只使用“this”,看起来会出现错误。是否缺少某些内容?严重性代码说明项目文件行错误CS1061“ChangeColor”不包含“pnlCanvas”的定义,并且找不到接受类型为“ChangeColor”的第一个参数的扩展方法“pnlCanvas”(是否缺少using指令或程序集引用?)在form1中更改颜色代码不是问题。我不能让form1之外的独立类更改form1面板的属性吗?为什么要这样做?如果您认为这是正确的方法,那么您就有严重的体系结构问题,超出了这个问题的范围。我们正在尝试构建“块”,这些块可以交换来执行不同的功能。表单上的项目不能看到块中的代码。我们要做的一件事就是将数据从一个独立类显示到一个面板上。你的块不是块,而是意大利面代码。如果你真的相信你需要这样的东西,那么把面板作为一个参数传递,不要引用表单。这是意大利面代码,他们不想从头重写它。它将在几周后被扔掉。它是作为一个试验台系统建立的,有多种想法,看看他们是否能随波逐流。但谢谢你通过了专家组的辩论。这就解决了这个问题。
class ChangeColor 
{
    public Form1 form1 { get; set; }
    public ChangeColor(Form1 form1)
    {
        this.form1 = form1;
    }
    Public void RedPanel()
    {
        form1.pnlCanvas.BackColor = Color.Red;
    }
}
    Public void RedPanel()
    {
        this.pnlCanvas.BackColor = Color.Red;
    }