2010-03-21 12 views
14

Ho un progetto WinForm che contiene un modulo chiamato MainUI. Puoi vedere che la classe parziale generata automaticamente si presenta come un nodo sotto MainUI.cs. C'è un modo per "spostare" la mia classe parziale creata automaticamente MainUI.Other.cs sotto MainUI.cs in modo che venga visualizzata come un altro nodo?Classi parziali WinForm

alt text http://i42.tinypic.com/dnkoyo.jpg

risposta

12

Chiudere la soluzione in Visual Studio e aprire il file .csproj in un editor di testo. Trova MainUI.Other.cs, e aggiungere la seguente elemento XML:

<Compile Include="MainUI.Other.cs"> 
    <SubType>Form</SubType> 
    <DependentUpon>MainUI.cs</DependentUpon> <!-- this is the magic incantation --> 
</Compile> 

riaprire la soluzione in Visual Studio e godere la bontà subnodular.

Detto questo, potresti voler riconsiderare se questa è una buona idea. Il motivo per cui il file .designer.cs viene visualizzato come sottonodo è perché normalmente non è necessario o si desidera aprirlo perché contiene codice generato che normalmente si visualizzerà o modificherà tramite il designer. Considerando che un file di classe parziale conterrà il codice, che si desidera modificare e visualizzare; potrebbe essere fonte di confusione per i programmatori di manutenzione se il file non è facilmente visibile in Solution Explorer. Tuttavia, solo tu puoi sapere cosa è giusto per il tuo progetto - solo qualcosa da tenere a mente!

+0

Nota: se il file "DependentUpon" si trova in una sottocartella, anche se viene visualizzato altrove come , quando si utilizza ancora solo filename Questo. –

0

è possibile modificare il file di origine di progetto per raggruppare i file correlati. Nel file sorgente del progetto, trova l'elemento ItemGroup che contiene MainUI.cs e aggiungi una voce per MainUI.Others.cs

Qui un post sul blog che mostra come farlo nei dettagli. Group/nest source code files

1

Sì, questo è possibile, ma sarà necessario modificare manualmente il file di progetto.

Nel file di progetto (aprirlo con l'editor XML) individuare il gruppo di voci dell'elenco file. Nel mio esempio, ho lasciato il modulo come "Form1.cs". Aggiungere l'elemento figlio "<DependentUpon>" alla classe estesa come per l'esempio che segue:

<Compile Include="Form1.cs"> 
     <SubType>Form</SubType> 
    </Compile> 
    <Compile Include="Form1.Designer.cs"> 
     <DependentUpon>Form1.cs</DependentUpon> 
    </Compile> 
    <Compile Include="Form1.Designer.Other.cs"> 
     <DependentUpon>Form1.cs</DependentUpon> 
     <SubType>Form</SubType> 
    </Compile> 

genere anche se non si vuole alcun codice non generato da nascondere come nodo figlio però. La mia pratica normale è quella di creare una cartella nel progetto chiamato "Classi parziali" e aggiungerli tutti nella stessa posizione.