2010-02-09 20 views
5

ich eine benutzerdefinierte Klasse haben, die sich von Splitcontainer ableitet:Custom-Designer für ein Control

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

Nun, wenn ich mit der rechten Maustaste und wählen View Designer es ich möchte sehen, die Splitcontainer und bearbeiten , wie ich es mit den Standardeinstellungen machen würde (drop ein Panel drin usw.). Alles, was ich sehe, ist eine Nachricht zum Hinzufügen von Steuerelementen und wechseln Sie zu Codeansicht.

Wie erreichen?

Antwort

9

Um Design-Zeit-Funktionalität wie zusätzliche Operationen (bekannt als Aktionslisten und Verben, je nachdem, wie sie zur Verfügung gestellt werden) oder Ziehen von visuellen Elementen wie Header oder gespaltenen Balken, benötigen Sie Implementieren eines benutzerdefinierten Designers (normalerweise abgeleitet von ControlDesigner), der es dem Windows Forms-Designer ermöglicht, die Interaktion mit dem benutzerdefinierten Steuerelement zur Entwurfszeit zu verstehen.

MSDN verfügt über a lengthy section zum Hinzufügen von Entwurfszeitunterstützung für Ihre Steuerelemente. Es beschreibt alles von type converters bis extender providers und designer serialization bis designer customization.

Zusätzliche Ressourcen

This article on CodeProject enthält Informationen über Designer für benutzerdefinierte Steuerelemente zu erstellen. Es gibt auch einige nützliche Tipps here und in this other StackOverflow question.

1

Wenn Sie Ihr Steuerelement schreiben, müssen Sie sicherstellen, dass ihm Entwurfszeitlogik hinzugefügt wird.

Weitere Details finden Sie unter this (.NET 1.0) article on MSDN. Here ist ein anderer Artikel von 2003.

+0

Danke, aber ich kann nicht finden, wie und welche Entwurfslogik diesen spezifischen Code hinzufügen und wie ich meine Kontrolle im Designer fertigstellen/füllen kann ... – MysticEarth

3

Nur die Klassen Form und UserControl verfügen über Designer, mit denen Sie ihre untergeordneten Steuerelemente zur Entwurfszeit bearbeiten können. Das Erstellen eines eigenen Designers, um SplitContainer das gleiche Verhalten zu geben, ist nicht gerade einfach, vor allem weil es so schlecht dokumentiert und schwer zu debuggen ist. Sie müssen den Framework-Code mit Reflector studieren, um es richtig zu machen.

Punt dieses Problem, legen Sie den SplitContainer in einem Benutzersteuerelement. Setzen Sie die Dock-Eigenschaft auf Ausfüllen. Jetzt ist es einfach.