C# Windows Forms - Custom Forms?
Hallo,
ich habe mir gedacht, da ich alle meine Programme exakt gleich gestalte, mache ich mir einfach mal eigene Controls fertig, die dann auch schon den eigentlichen Style besitzen.
Nun, das ist alles kein Problem. Doch was das Problem ist: Ich will die Form auch designen, also dass man am Ende zum Beispiel seinen Code von:
public partial class Form1 : Form
zu
public partial class Form1 : EigeneForm
ändert. Sodass es dann auch die Title Leiste usw. abändert. Sowas ist Möglich, da gibt es auch etliche Bibliotheken. Nun will ich aber meine eigene Bibliothek haben, da ich ja nun mal meinen eigenen Style habe.
Wie kann ich das also machen? Google scheint das überhaupt nicht zu kennen ...
Bei nachfragen, gerne fragen, ansonsten freue ich mich über gute Antworten
2 Antworten
Da gibt es zich verschiedene Wege.
Also wenn du es lieber einfach haben willst, kannst du einfach deine eigene Form von Winform erbenlassen und Borderstyle auf none setzen. Anschließend kannst du die Titelleiste einfach mit einem Panel erstellen und closebuttons und co hinzufügen. Du kannst anschließend noch Funktionen schreiben, damit du das Fenster auch genauso verschieben und vergrößern kannst. Dafür kannst du auch auf WndProc zugreifen, allerdings sind da C Kentnisse oder von vorteil. Dazu gibt es auf mycsharp.de übrigens auch ganz coole Snippets oder Tuts
Statt Panels kannst du natürlich auch mit GDI+ einfach alles zeichnen, allerdings ist GDI+ schon echt ne lahme Krücke... Für simple Animationen oder etwas übersichtliche Forms gehts aber. habe sonst auch schon Projekte mit OpenGL oder DirectX gesehen aber die sind etwas komplizierter.
Ich könnte nachher zuhause mal schauen. Müsste noch ein Grundgerüst für so eine Lib (nicht öffentlich) auf Github haben. Ist allerdings schon etwas her, dass ich die gemacht habe. Heute arbeite ich eher mit Avelonia. Wenn du willst kann ich dir das freigeben ;) ...
bei Google kannst du einfach mal nach ownerdrawn Winforms oder custom Winform suchen. Auf Codeproject kannst du auch mal suchen, die hatten einiges zu dem Thema und auch wirklich geile ownerdrawn Controls wie advanced Listboxes, dropdownmenüs etc. gemacht.
und sonst hilft das vielleicht:
Ja top! Dann viel Erfolg und wenn du mal nicht weiter kommst kannst du auch gerne nochmal fragen ;)
Dir geht's um sozusagen ein eigenes Theme, was über alle Projekt hinweg gleich ist?
Ja, das geht, aber nur umständlich und auf die "harte" Tour.
Die beste Möglichkeit hast Du vermutlich, wenn Du die Form + Controls selber zeichnest, hast dann aber auch den Aufwand, dass Du die Features entsprechend zeichnen musst und da fängt's dann an, umständlich zu werden.
Oder Du verwendest die bereits vorhandenen Properties, bist dann aber auch sehr eingeschränkt.
Und es kann auch sein, dass Du für spezielle Anforderungen auf die WinApi zurückgreifen musst und dann wird es erst recht komplex ;)
Also ja: WinForms kann das, ist für sowas aber nicht gemacht.
Die Projekte, die eigene speziellere Layouts implementieren, zeichnen meist selber, aber das ist viel Arbeit.
Für das, was Du vor hast, ist WPF (oder das nagelneue MAUI) deutlich besser geeignet, das hat Technologien (Styles, Resources, Templates), mit denen sowas ziemlich einfach und dynamisch machbar ist.
Z.B. MahApps ist z.B. ein Framework für WPF, was für die vorhandenen Controls eigene Themes implementiert, die muss man dann nur noch registrieren und das ganze Programm sieht anders aus.
Was dir lieber ist (WinForms vs. WPF/MAUI), musst Du wissen, aber für dieses Vorhaben sind WPF bzw. MAUI definitiv besser geeignet und zumindest MAUI wird (vermutlich - ist noch offen, wie es sich entwickeln wird) auch die Zukunft gehören.
WinForms gibt's nur noch, weil Microsoft es nicht sterben lassen kann/darf :D
OHA, vielen dank, ich hatte sogar den richtigen Gedanken, wollte es nicht machen, da es falsch aussah 😅
Der Github-Link zum Metroframework war sehr hilfreich. Habe mir angeschaut, wie es aufgebaut ist und verstanden, wie ich daran gehen muss 👍🏼