C# Windows Forms - Custom Forms?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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:

https://www.youtube.com/watch?v=JP5rgXO_5Sk

https://github.com/thielj/MetroFramework

Woher ich das weiß:Berufserfahrung – DevOps C# Entwicklung

FaTech 
Fragesteller
 30.09.2021, 16:30

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 👍🏼

1
DonQuijotte972  30.09.2021, 16:33
@FaTech

Ja top! Dann viel Erfolg und wenn du mal nicht weiter kommst kannst du auch gerne nochmal fragen ;)

0

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

Woher ich das weiß:Berufserfahrung