1

是否可以在另一个类中移动 get set 方法?

我正在使用一个选项表单,它基本上直接在主表单中反映所有更改(主要用于更改控件颜色、字体等。

当您开始修改相当多的控件时,问题就开始了,因为主类填充了 get set 方法,所以我想知道是否可以重构代码以增加类的可读性,或者甚至更好,如果可能的话以某种方式移动另一个类中的方法(部分类?)

这是一个只有两个控件的小示例

public Font TreeFont
{
    get { return customTreeView1.Font; }
    set { customTreeView1.Font = value; }
}

public Font TextBoxFont
{
    get { return customTextBox1.Font; }
    set { customTextBox1.Font = value; }
}

public Font MenusFont
{
    get { return menuStrip1.Font; }
    set
    {
        menuStrip1.Font = value;
        statusStrip1.Font = value;
        contextMenuStripForSnippetContent.Font = value;
        contextMenuStripTreeViewMenu.Font = value;
    }
}

public Color TreeFontForeColor
{
    get { return customTreeView1.ForeColor; }
    set { customTreeView1.ForeColor = value; }
}

public Color TextBoxFontForeColor
{
    get { return customTextBox1.ForeColor; }
    set { customTextBox1.ForeColor = value; }
}

public Color TreeFontBackgroundColor
{
    get { return customTreeView1.BackColor; }
    set { customTreeView1.BackColor = value; }
}

public Color TextBoxFontBackgroundColor
{
    get { return customTextBox1.BackColor; }
    set { customTextBox1.BackColor = value; }
}

因此,您可以想象,因为其中有很多需要更改,所以这些行就堆积起来了。

此外,仅返回控件并仅在其他表单上进行处理会是更好的做法,还是 get/set 方法被认为是更好的做法?

提前致谢。

4

3 回答 3

1

您可以使用C# Regions使大型代码文件易于管理,也可以使用Partial Classes将大型代码文件拆分为多个可管理文件。

于 2012-07-31T05:50:55.233 回答
1

如果我理解正确 - 问题不是“类”而是“文件”。InitializeComponent因此,您可以使用Partial Classes简单地将类拆分为两个文件(就像 Visual Studio 对方法所做的那样) 。

确保命名空间相同(如果您在子文件夹中创建文件,您将获得一个嵌套命名空间。只需更改它。)另外,请确保您的类以public partial class 两个文件开头。并且没有在两个类中声明相同的属性。

分步说明:在“解决方案资源管理器”中 右键单击您的项目。点击“添加”。单击“新项目”。点击“班级”。更改class Class1public partial class Form1 : Formusing System.Windows.Forms;在文件顶部添加。添加您的属性。

于 2012-07-31T11:39:20.867 回答
0

您可以使用允许 Page.FindControl("controlNameHere") 的不同类型的函数,并将其投射到正确的光线下。这更适用于 ASP.NET 页面,而不适用于 Windows 窗体,但您可以在这里找到相同的解决方案Find control by name from Windows Forms controls。这样您就可以提取控件名称并进行操作,而无需返回任何内容。

于 2012-07-31T05:50:57.253 回答