C# WinForms oder WPF

Wichtelherbert

Cadet 4th Year
Registriert
Juli 2021
Beiträge
86
In der Ausbildung haben wir ein wenig C# gehabt und dabei hauptsächlich via WinForms gearbeitet.

Nun habe ich ein Hobby Projekt und ein Projekt für Arbeit wo mir das Programm mehr oder weniger nur ein paar einfach Arbeiten abnehmen soll. Eher in die Richtung Batch Datei. Aber gern mit grafischer Oberfläche.
Gerade Command Binding sind schon ein bisschen umständlicher zu bewerkstelligen, als einfach ein Click Event in WinForms

Sollte ich hierfür eher WinForms nutzen oder mich in WPF einarbeiten? Oder wäre es vielleicht besser gleich mit C++ anzufangen? Das dies mehr Zeit beansprucht ist mir bewusst.
 
Also ich bin kein Profi, aber soweit ich weiß ist WPF das neuer und bessere von den beiden. Damit habe ich zumindest angefangen und mir wurde abgeraten, da WinForms veraltet ist.

Allerdings hieß es auch, dass WinForms immer noch brauchbar sei für kleinere Dinge.

Ich hätte mir die WPF angeschaut, da du damit auch andere größere Dinge mit machen kannst. Ist moderner.
Mit C++ kenne ich mich nicht aus.
 
Eigentlich richtet sich die Wahl der Programmiersprache und der Oberflächentechnologie nach den Anforderungen.

Wenn du keine konkreten Anforderungen hast, die dir etwas vorgeben, kannst du machen, was du willst oder was dir gefällt.
 
  • Gefällt mir
Reaktionen: Wasserhuhn
Warum nicht gleich WinUI 3?
Wenn du nicht weisst womit du arbeiten willst, gibt es keinen Grund noch auf WinForms und WPF zu setzen.

Wichtelherbert schrieb:
Oder wäre es vielleicht besser gleich mit C++ anzufangen? Das dies mehr Zeit beansprucht ist mir bewusst.
Ich würde u.a. deshalb (zusätzlich Bug- und Sicherheitslückenpotential) davon abraten. Was ist deine Motivation dafür?
Ohne Altlasten oder einem besonders hohen Bedarf an Performance macht es keinen Sinn, zumal zur Zeit eine Rust API für Windows flott gemacht wird - leider noch ohne XAML Support (d.h. kein UI-Designer verwendbar -> XAML UI selbst schreiben).
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Wasserhuhn, NotNerdNotDau, Kalsarikännit und eine weitere Person
WPF hat gegenüber WinForms auch noch den Vorteil, dass man UI-Beschreibung und Programmlogik besser trennen kann - als gängiges Pattern wird da MVVM genutzt.
 
Kommt darauf an wieviel Zeit Du investieren willst. WinForms ist oft genug ausreichend, WPF bietet schon mehr aber ist nicht niedrigschwellig in der Verwendung d.h. man muss mehr Lernzeit investieren um nicht nur irgendwas zusammen zu pasten.

Wenn Du nur ein Minimal UI hast wäre es taktisch klug mal in WPF reinzuschnuppern, perfekt zum ausprobieren. Es wird aber nicht sein wie bei WinForms das Du das Gesamtkonzept danach im Prinzip verstanden hast.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Loopman
Wichtelherbert schrieb:
Gerade Command Binding sind schon ein bisschen umständlicher zu bewerkstelligen, als einfach ein Click Event in WinForms
Wenn das für Dich einfacher ist, Du keine Funktionalitäten von WPF benötigst, dann würde ich WinForms nehmen. Das kann MS noch so oft abkündigen, das wird auch die nächsten Jahre noch bestehen bleiben. Und wenn Du keine Kundenprojekte erstellst sondern einfach nur ein paar GUI-Hilfstools für Dich (oder z.B. für die direkten Kollegen im Support), dann wüsste ich persönlich nicht, warum ich WPF nutzen sollte.

KitKat::new() schrieb:
Jetzt müsste man halt exakt wissen, wo/wie die Tools (als besserer Batch-Ersatz) in naher Zukunft eingesetzt werden sollen.

Ein WinForms/WPF Programm kopiere ich zur Not einfach auf den Server und starte es (wenn es nicht läuft wird das Projekt es halt auf .NET 4.5.2 o.Ä. "degradiert", falls ich die neuen Funkionalitäten nicht zwingend benötige). .NET5 installiere ich nicht mal einfach so auf einem produktiven Win 2016 Server.

Vergleichbares gilt für mich mit C#, C++ oder was auch immer man für eine Sprache bevorzugen will. Geht es nur um "eigene" Tools und nicht auch um die Einarbeitung für andere Aufgaben, dann nehme ich das, was ich am Besten kann und was auf den vermuteten Zielplattforman verfügbar ist. Will/muss ich irgendwann in naher Zukunft neben Windows noch anderes unterstützen, würde ich eher nicht zu C# greifen. Da ist für mich die Gefahr viel zu groß, mich an die Vorzüge eines VS zu gewöhnen und dann auf anderen Plattformen schon wieder alles neu lernen zu müssen.
 
  • Gefällt mir
Reaktionen: Oma Erna
Wie schon gesagt, für einfache Tools oder private Anwendungen ist das GUI Framework das du schon kennst das Beste.

gymfan schrieb:
in WinForms/WPF Programm kopiere ich zur Not einfach auf den Server und starte es (wenn es nicht läuft wird das Projekt es halt auf .NET 4.5.2 o.Ä. "degradiert", falls ich die neuen Funkionalitäten nicht zwingend benötige). .NET5 installiere ich nicht mal einfach so auf einem produktiven Win 2016 Server.

Vergleichbares gilt für mich mit C#, C++ oder was auch immer man für eine Sprache bevorzugen will. Geht es nur um "eigene" Tools und nicht auch um die Einarbeitung für andere Aufgaben, dann nehme ich das, was ich am Besten kann und was auf den vermuteten Zielplattforman verfügbar ist. Will/muss ich irgendwann in naher Zukunft neben Windows noch anderes unterstützen, würde ich eher nicht zu C# greifen. Da ist für mich die Gefahr viel zu groß, mich an die Vorzüge eines VS zu gewöhnen und dann auf anderen Plattformen schon wieder alles neu lernen zu müssen.
Bei .NET Core und höher ist das ja eh nicht mehr so gedacht das man davon ausgeht das das Framework installiert ist, man kann das ja ganz einfach so bauen das deine Anwendung das richtige Framework mitbringt. Dieses Framework wird dann auch nur von dieser einen Anwendung benutzt, ist also kein zusätzliches Risiko.

Wenn eine GUI dabei sein soll dann ist C# leider noch nicht platformunabhängig. Mal sehen was die noch mit MAUI machen, aber ich halte da sicher nicht die Luft an. Vielleicht kommt da was gutes und platformunabhängiges bei raus, aber ich wäre da immer noch sehr vorsichtig. Wenn aber keine GUI dabei sein muss und es z.B. ein Kommandozeilentool oder eine Webanwendung/Webserver ist dann ist C#/.NET 5 schon wirklich platformunabhängig. Das funktioniert super unter Linux.
 
Dalek schrieb:
Wenn eine GUI dabei sein soll dann ist C# leider noch nicht platformunabhängig. Mal sehen was die noch mit MAUI machen, aber ich halte da sicher nicht die Luft an.
Was ist mit Uno?
 
KitKat::new() schrieb:
Das generelle Problem ist die Zukunft vorherzusagen um zu wissen welches Framework auf Dauer unterstützt wird. Keine Ahnung wie das in dem Bereich am Ende aussieht, ist aber auch nicht ganz mein Gebiet da ich nur ASP.NET benutze und Webanwendungen mache.

MAUI wäre eine von MS offiziell unterstützte Lösung. Aber auch da wäre ich vorsichtig mich drauf zu verlassen, bei GUIs scheint einfach ziemliches Chaos zu herrschen im .NET Land.
 
Also wichtig ist es erst mal die Konzepte zu lernen, weil die sind meistens bei den verschiedenen Technologien ähnlich.

Interessant finde ich dann immer, dass dann plötzlich Anforderungen wie Plattformunabhängigkeit hineingedichtet werden...
 
  • Gefällt mir
Reaktionen: Oma Erna
So wie sich das hier liest, also eher Richtung Batch mit aufgestülpter GUI, da ist WinForms absolut ausreichend.
WPF ist moderner und man theoretisch mehr damit machen, aber ist halt auch nicht so einfach und trivial zu lernen. Man muss sich da schon was reinfuchsen. Und das lohnt sich nur, wenn man eh weiss, dass man danach noch mehr und anspruchsvoller programmieren möchte.
 
Zurück
Oben