Hallo zusammen,
ich arbeite mich gerade ein wenig in C# ein und frag mich gerade, welche Basisklasse ich für welchen Zweck nehmen sollte. Ich komme von Java, da nimmt man eigentlich meist ein Panel/JPanel und setzt die nötigen Controls drauf. In C# gibts aber die Basisklasse UserControl. Ist das die erste Wahl? Was ist da der Unterschied zum einfachen Panel?
Und noch was: Wie ich das bisher gesehen hab, gibt es in C# kein ScrollPane oder sowas, sondern man kann einfach die Property Scrollable setzen und dann erscheinen Scrollbalken, wenn sich ein Control ausserhalb des sichtbaren Bereiches befindet. Richtig? Wenn ich jetzt aber auf ein Panel zeichnen möchte (nimm ich da jetzt ein Panel oder ein UserControl?) und ich über den Bereich hinauszeichne, werden dann auch Scrollbalken angezeigt? Oder muß ich dem Control sagen wie groß es sein sollte? (in Java gibts da sowas wie ein preferredSize)
Fragen über Fragen…
Gruß
Jodus
Hallo
Wenn Du eine Form designen willst, brauchst Du nicht zwingend ein Panel oder UserControl. Du kannst die Controls direkt auf die Form platzieren.
Panels sind eher als Container für Controls gedacht. Ein Panel macht z.b. Sinn im Zusammenhang mit einem Splitter.
UserControl brauchst Du eigentlich nur wenn Du ein eigenes Control implementieren möchtest.
Angenommen Du willt eine „Outlookbar“ programmieren welche Du dann auf eine Form platzieren kannst… Dann beginnst du mit einem UserControl und schreibst Da dein Code rein.
Betreffend Scrollbars bin ich überfragt. Ich designe meine Forms immer so, dass ich nicht scrollen muss.
Gruss
Hallo,
erstmal danke für die schnelle Antwort.
UserControl brauchst Du eigentlich nur wenn Du ein eigenes
Control implementieren möchtest.
Angenommen Du willt eine „Outlookbar“ programmieren welche Du
dann auf eine Form platzieren kannst… Dann beginnst du mit
einem UserControl und schreibst Da dein Code rein.
Genau darum gehts. Ich könnte ja mein eigenes Control auch auf ein Panel Aufbauen, oder? Was bietet mir die Klasse UserControl für Vorteile?
Ach ja, und nochwas:
Ich als Java-Mensch bins gewohnt, das die Package-Struktur (Namespaces in C#) im Dateisystem als Verzeichnisbaum abgebildet wird. Das ist ja in C# nicht der Fall. Kann ich die Klassen in irgendwelche Verzeichnisse legen? Was ist denn hier ‚Sitte‘? Alles in einem Verzeichnis ist wohl etwas unübersichtlich, oder?
Gruß
Jodus
Genau darum gehts. Ich könnte ja mein eigenes Control auch auf
ein Panel Aufbauen, oder?
Was bietet mir die Klasse
UserControl für Vorteile?
Schau dir mal die Vererbung an:
Panel : ScrollableControl : Control
UserControl : ContainerControl : ScrollableControl : Control
D.h das Panel muss von einem anderen Control gehostet werden.
Das UserControl kann von Designer gehostet werden.
Wenn Du jetzt dein eigenes Control im Panel machst, musst Du es in einer Form hosten, somit ist es nicht wiederverwendbar. (Ausser Du erbst von Panel…)
Ein UserControl kannst Du im Studio öffnen, codieren und designen, in die Toolbox schmeissen und mehrmals verwenden.
ist etwas schwer zum erklären aber ich hoffe ich war klar genug…
Ach ja, und nochwas:
Ich als Java-Mensch bins gewohnt, das die Package-Struktur
(Namespaces in C#) im Dateisystem als Verzeichnisbaum
abgebildet wird. Das ist ja in C# nicht der Fall. Kann ich die
Klassen in irgendwelche Verzeichnisse legen? Was ist denn hier
‚Sitte‘? Alles in einem Verzeichnis ist wohl etwas
unübersichtlich, oder?
Du kannst in deinem Project Folders anlegen. wenn Du nun ein neues c# File in dieses Verzeichnis anlegst, heisst der Namespace dann „RootNameSpace“.„FolderName“.
Ich arbeite so, und denke das ist auch üblich.
VB.NET verhaltet sich da jedoch anders… da wird Namespace so belassen.
Gruss und viel spass mit c#
Giuseppe