Wie kann ich in WinForms eine UserControl
erstellen, die ich, wenn ich mein Formular anlege, dann andere Steuerelemente hinzufügen kann, indem ich sie aus der Toolbox ziehe, genauso wie bei allen Containersteuerelementen (Panels, Gruppenboxen usw.)? Ich habe versucht, Steuerelemente hinzuzufügen, indem ich sie in mein Steuerelement einfüge, aber wenn ich mein Steuerelement verschiebe, bleiben die Steuerelemente genau dort, wo sie sind. Das würde nicht passieren, wenn ich anstelle meines Steuerelements Panel
verwenden würde bewegen Sie sich mit dem Panel).Wie erstellt man ein Benutzersteuerelement, das Sie andere Steuerelemente darin löschen können?
Antwort
Im Gegensatz zu einer Panel
Kontrolle zum Beispiel fungiert eine UserControl
nicht als Container-Steuerelement, sobald es in einem anderen Formular platziert wird. Während Sie die UserControl
selbst entwerfen, gibt es volle Entwurfszeitunterstützung aber sein Standardverhalten ermöglicht es nicht, es als ein Elementsteuerelement zu fungieren, nachdem es in einem anderen Formular platziert worden ist. Aus diesem Grund können Sie keine anderen Steuerelemente hinzufügen, indem Sie sie aus der Toolbox ziehen.
Um diese Art von Verhalten zu UserControl
hinzuzufügen, müssen Sie die DesignerAttribute
der Definition Ihrer benutzerdefinierten UserControl
Klasse hinzufügen. Zum Beispiel:
using System.ComponentModel;
using System.ComponentModel.Design;
[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))]
public class MyUserControl : System.Windows.Forms.UserControl
{
//...your code here
}
(. Die entsprechenden MSDN Artikel für weiterführende Literatur siehe)
Wenn Sie voller Designer Unterstützung für verschachtelte Kontrollen in Ihrem UserControl
implementieren mögen, ist dies etwas schwieriger. Für eine umfassendere Diskussion, siehe this article auf CodeProject.
WinForms oder WPF? –
WinForms ........ – Juan