C# 在另一个类中移动get/set方法

C# 在另一个类中移动get/set方法,c#,winforms,C#,Winforms,是否可以在另一个类中移动get set方法 我使用的选项表单基本上直接反映了主表单中的所有更改(主要用于更改控件颜色、字体等) 当您开始修改相当多的控件时,问题就开始了,因为主类中填充了get set方法,所以我想知道是否可以重构代码以增加类的可读性,或者更好,是否可以以某种方式将方法移动到另一个类中(部分类?) 下面是两个控件的一个小示例 public Font TreeFont { get { return customTreeView1.Font; } set { cust

是否可以在另一个类中移动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方法被认为是一种更好的做法


提前感谢。

您可以使用使大型代码文件可管理,也可以使用将大型代码文件拆分为多个可管理的文件。

您可以使用允许Page.FindControl(“controlNameHere”)的不同类型的函数,并以正确的方式进行转换。这更多的是针对ASP.NET页面,而不是针对Windows窗体,但您可以在此处找到相同的分辨率。通过这种方式,您可以提取控件名称并进行操作,而无需返回任何内容。

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

确保名称空间相同(如果在子文件夹中创建文件,则会得到一个嵌套的名称空间。只需更改它即可。)此外,确保两个文件中的类都以
public partial class
开头。并且不要在两个类中声明相同的属性

逐步说明:
右键单击“解决方案资源管理器”中的项目。单击“添加”。单击“新建项”。单击“类”。将
class Class1
更改为
public partial class Form1:Form
。使用System.Windows.Forms;在文件顶部添加
。添加属性。

如果方便的话,您也可以创建一个partial class,并将属性分组到不同的文件中。这是我的第一个想法,但当我尝试使用partial class时为了设置或获取控件属性,访问控件属性时出现了一个问题,除非我做了一些非常错误的事情。这就是我目前正在做的事情,但试图找到特定的方法感觉有点困难,这就是为什么我在寻找一种移动或重构控件的方法,使其在第一阶段更具可读性t glance.能否给我一个示例,说明如何使用分部类发送控件属性,因为我总是在访问分部类中的控件时遇到问题。这是我当前的想法,这就是为什么我问这样发送控件是否被认为是一种好的做法。我认为这取决于您的内容的动态程度这是可以接受的良好实践。我还认为这是不必使用反射实现自己版本的动态的最佳方式。这就是我正在做的,但新的分部类无法访问已设置的控件。我是否遗漏了某个步骤?@denied66我的“分步说明”中的所有步骤你都做了吗?如果是-请解释“无法访问已设置的控件”的确切含义。你的意思是当你试图在方法中引用它们时,Intellisense不提供它们吗?@denied66也许你提到的控件已在方法中声明(例如构造函数)如果是这样的话,它们会变成局部变量,并且不能从该方法外部访问。请改为在类中声明它们。是的,这正是我的意思(您的第一个注释)。我希望主窗体中的控件可以在分部类中访问。问题是,正如您所描述的,Intellisense在键入其名称时不会显示它们。编辑:我发誓,每次尝试创建分部类时都会出现错误。这次我再试一次,以便为您提供一个示例,说明错误是什么事情发生了,一切都很顺利…在我找到解决方案之前,你是唯一一个真正回复的人,所以请将你的答案标记为已接受。谢谢。