2012-07-31 15 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

相關問題