2010-02-09 9 views
5

Ho una classe personalizzata che deriva da SplitContainer:Designer personalizzato per un controllo

namespace Builder.Components 
{ 
    public partial class ProjectSidebar : SplitContainer 
    { 
     public ProjectSidebar() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

Ora, quando il tasto destro del mouse e selezionare Progettazione viste Mi piacerebbe vedere la SplitContainer e modificarlo , come farei con i controlli predefiniti (rilasciare un pannello, ecc.). Tutto ciò che vedo è un messaggio per aggiungere controlli e passare a Visualizzazione codice.

Come raggiungere questo obiettivo?

risposta

9

Per aggiungere funzionalità in fase di progettazione come operazioni aggiuntive (note come elenchi di azioni e verbi in base a come vengono fornite) o trascinamento di elementi visivi come intestazioni o barre divise, è necessario implementare un designer personalizzato (in genere derivato da ControlDesigner) che consente al designer di Windows Form di capire come interagire con il controllo personalizzato in fase di progettazione.

MSDN ha a lengthy section sull'aggiunta del supporto in fase di progettazione per i controlli. Descrive tutto da type converters a extender providers e designer serialization a designer customization.

Risorse aggiuntive

This article on CodeProject contiene informazioni sulla creazione di progettisti per controlli personalizzati. Ci sono anche alcuni consigli utili here e in this other StackOverflow question.

1

Durante la scrittura del controllo, è necessario assicurarsi di aggiungere la logica del tempo di progettazione ad esso.

Vedere this (.NET 1.0) article on MSDN per ulteriori dettagli. Here è un altro articolo del 2003.

+0

Grazie, ma non riesco a trovare come e quale logica di progettazione aggiungere a questo specifico codice e come completare la creazione/il riempimento del mio controllo in Designer ... – MysticEarth

3

Solo le classi Form e UserControl dispongono di progettisti che consentono di modificare i relativi controlli figlio in fase di progettazione. Creare il proprio designer per dare a SplitContainer lo stesso comportamento non è esattamente semplice, soprattutto perché è scarsamente documentato e difficile da eseguire il debug. Avrai bisogno di studiare il codice del framework con Reflector per farlo bene.

Puntare questo problema, mettere SplitContainer in un controllo utente. Imposta la proprietà Dock su Fill. Ora è facile.