eingenes Control mit welcher Basisklasse

27/05/2008 - 10:40 von Simon Schäberle | Report spam
Hallo zusammen,

ich bin auf der Suche nach dem besten Basiscontrol für ein eigenes
Control.

Es gibt ja Control und UserControl. Da dies unter C# meine ersten
gehversuche mit einem eigenen Control sind, bin ich auf der Suche nach
Informationen, was die Vorteile und Nachteil der beiden Klassen sind,
wenn man ein eigenes Control erstellen möchte, um nicht in einer
Sackgasse zu landen.
Was ich schon herrausgefunden habe ist, das UserControl komfortabel
mit vorhandenen Controls bestückt werden kann.

Wie steht es um grundlegende Funktionen und Event (MouseDown,
MouseMove, ...) gibt es da unterschiede?

Zu den Anforderungen an mein Control:
- es muss Zeichen mit Graphics möglich sein
- Skalierung und Verschieben muss möglich sein,
- Docking wird nicht benötigt
- evtl. nicht die "klassische" Rechteckform, sondern ein Vieleck (je
nach Aufwand)

Gruß
Simon Schaeberle
 

Lesen sie die antworten

#1 Peter Bucher [MVP]
27/05/2008 - 12:09 | Warnen spam
Hallo Simon

Schau dir mal die Referenzen der beiden Klassen in der MSDN an, oder guck in
den Quelltext
mit dem Reflector.

Im Prinzip ist es einfach:
UserControl ist dazu gedacht, mehrere Controls zu einem zusammenzufassen /
kapseln.
Control ist die Basisklasse für Controls schlechthin, falls kein bestehendes
Control als Basis genommen
werden kann, fàngt man bei der Basis an.

Ein UserControl hat noch einen visuellen Designer Teil, bzw. schlussendlich
einfach automatisch generierte Initialisierungen,
um eine Oberflàche zu erzeugen.
D.h. du hast zwei Teile: Oberflàche und Code

Wenn du ein normales Control entwickels, zeichnest du die komplette
Oberflàche selber.
Eine Ableitung von UserControl macht Sinn, um eine Basisklasse für
UserControls zu erstellen,
die Ableitung von einem bestehenden UserControl macht nur Sinn, wenn du
visuelle Vererbung nutzen kannst,
also die Oberflàche in das neue Control übernehmen kannst.
(Weiss nicht wie das in WindowsForms gehandhabt ist).

Möglich ist in beiden Fàllen jeweils alles.

Gruss, Peter Bucher
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
http://www.aspnetzone.de/blogs/peterbucher/ - Auf den Spuren von .NET

Ähnliche fragen