2016-06-20 100 views
1

我目前面臨的問題是我的主文件Form.cs越來越大,我想將它分成幾個部分文件。這些應該堅持在Visual Studio解決方案資源管理器的主窗體(MainForm.cs)節點下。在windows窗體節點下添加部分窗體類

我嘗試創建新的類文件並將其聲明爲我的MainForm類的部分源文件。但是,新創建的部分類文件更改它的圖標,看起來像一個表單。它應該堅持低於MainForm節點在解決方案資源管理器

爲了形象化的問題:

Wrongly ordered partial class file

MainForm.ContextActions.cs文件內容如下:

namespace Interface_Group_Editor 
{ 
    public partial class MainForm 
    { 
     [...] 
    } 
} 

內容類似於MainForm.Designer.cs文件。然而.Designer.cs文件粘在MainForm.cs節點下,而.ContextActions.cs不支持!

我只處理MainForm.cs文件中絕對必要的表單事件,並在我從表單訪問的外部類中擁有業務邏輯。但是,單獨使用我的TreeView代碼來維護和編輯表單需要大約500行代碼,這些代碼可以重新定位到新的部分源文件。這將有助於項目結構的整個可見性!

有沒有辦法強制這種行爲解決方案資源管理器

+1

看看[文件嵌套擴展](https://visualstudiogallery.msdn.microsoft.com/3ebde8fb-26d8-4374-a0eb-1e4e2665070c)。我正在使用它來合併(手動嵌套)WPF視圖+視圖模型(類似於你想要在表單組內嵌入一些'cs'),這很漂亮。不知道*組嵌套的想法*如果罰款。另一個選擇是在項目中爲每個大組(包含項目和其他組)創建文件夾,但是這會添加一些愚蠢的命名空間問題(也可能修復),將文件夾名稱添加到命名空間。 – Sinatr

+1

實際上提供了與下面的Hans Passant相同的答案的相關帖子是https://stackoverflow.com/questions/1478610/naming-conventions-for-partial-class-files –

回答

6

IDE不讓你這樣做,你必須用文本編輯器編輯.csproj文件。記事本會做。定位:

<Compile Include="MainForm.ContextActions.cs" /> 

和編輯到:

<Compile Include="MainForm.ContextActions.cs"> 
    <DependentUpon>MainForm.cs</DepedentUpon> 
</Compile> 

注意事項MainForm.Designer.cs入口看起來像這一點。請記住,此功能不經常測試,所以你可能會遇到一些怪癖。據瞭解,它運行良好,例如,當你移動它們時,你不會收到事件處理程序。刪除事件處理程序是更棘手的情況,我注意到MainForm.cs文件被標記爲已修改,即使它從未更改過。它不會像通常那樣刪除空的事件處理程序。因人而異。

繼承是Winforms中的終極動力工具。例如,您可以輕鬆地從TreeView派生自己的類並將所有自定義代碼移動到該類中。它不會不止一次使用。但也許有一天,你會:)

+1

我不想重複您的正確答案,但是在過去,我認爲子文件夾是以一種違反直覺的方式處理的。也許你想添加一個這樣的評論,類似於我在https://stackoverflow.com/questions/1478610/naming-conventions-for-partial-class-files –

+0

上說的太棒了!這個伎倆 – Vinzenz