2012-07-31 45 views
1

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

我使用的是选择形成基本反映了所有直接在主窗体的变化(主要是改变控件的颜色,字体等。

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

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

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方法被认为是更好的做法?

在此先感谢。

+0

您也可以创建一个部分类,并在不同的文件中对这些属性进行分组,如果这对您更容易。 – 2012-07-31 05:43:00

+0

这是我的第一个想法,但是当我尝试使用部分类时,访问控件属性以设置或获取它们时出现问题,除非我正在做一些非常错误的事情。 – denied66 2012-07-31 05:49:52

回答

1

如果我理解正确的话 - 这个问题是不是“阶级”,但“文件”。所以你可以使用Partial Classes简单地将类分成两个文件(就像Visual Studio用InitializeComponent方法一样)。

确保命名空间是相同的(如果你创建一个子文件夹中的文件,你会得到一个嵌套的命名空间。简单地改变它。)另外,请确保您的类开始public partial class两个文件。并没有在这两个类中声明相同的属性。

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

+0

这就是我正在做的,但新的部分类不能访问已经设置的控件。我在某个地方错过了一步吗? – denied66 2012-07-31 19:38:17

+0

@ denied66您是否执行了“分步说明”中的所有步骤?如果是这样 - 请解释“无法访问已经设置好的控件”的含义。你的意思是说,当你试图在方法中引用他们时,智能感知不提供它们? – ispiro 2012-08-03 12:08:45

+0

@ denied66也许你提到的控件已经在方法(比如构造函数)中声明,而不是在类中声明。如果是这样 - 它们成为局部变量,并且不能从该方法之外访问。而是在班级中宣布他们。 – ispiro 2012-08-03 12:33:49

1

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

+0

这就是我目前正在做的事情,但试图找到具体的方法感觉比应该更难一些,这就是为什么我正在寻找一种移动或重构它们的方式,它会更易于阅读乍一看。是否可以举例说明如何使用部分类来发送控件属性,因为我总是遇到访问分部类中控件的问题。 – denied66 2012-07-31 05:53:46

0

你可以用一种不同的功能,允许进行Page.FindControl(“controlNameHere”),并在合适的光线投它。这更适用于ASP.NET页面,不适用于Windows窗体,但您可以在此找到相同的分辨率Find control by name from Windows Forms controls。通过这种方式,您可以拉取控件名称并进行操作,而无需返回任何内容。

+0

这是我当前的想法,这就是为什么我问是否认为这是一个很好的做法来发送这样的控件。 – denied66 2012-07-31 05:55:41

+0

根据你的内容是如何动态的,我认为这是可以接受的和良好的做法。我也认为这是最好的动态方式,而不必使用反射来实现自己的版本。 – jamesbar2 2012-07-31 06:06:16

相关问题