Asking for advice for GUI choice

I need to start from scratch a .NET/Windows project that requires a GUI

And I need to decide on what to use for my GUI needs: WinForm or WPF, so I can invest my time wisely.

This is not much of a RemObject question but I still like to hear expert opinion from this forum.

I’m in the same boat at moment.
coming from Delphi, Winforms look more natural to me, but not sure of the future.
I think the learning curve from WPF is much higher.
Microsoft has also announced a Winform Designer for NET3 so I think I will go this way.
For me WPF is a “black hole”

And I’m another - basically a novice - who would love to hear from our experienced colleagues on the pros and cons of WinForms versus WPF.

I was tempted to teach myself WPF but my first impression (probably wrong) is that it was less flexible, and more difficult to learn, than WinForms. (I, too, came from Delphi originally.)

Winforms and WPF.
They are both - according to Microsoft - legacy.
And both supported for Windows only on .Net Core.

I personally never left WinForms as I only program for Windows and all my applications run on terminal servers, where WinForms performs better than WPF (as WPF uses the 3D engine).

If you want multi platform on .Net core, you have to try some third party tool or build a web application.

1 Like

That’s interesting, Theo. What does Microsoft consider to be “current”?

For the forseeable future I’ll only need to develop for Windows, so WPF or WinForms are both in the running. I also develop for microcontrollers, but obviously this question isn’t relevant to them.

UWP

And I have to add Blazor - or WebAssembly (WASM) for elements - because this seems to be the way that Microsoft is heading - everything in the browser.

Ah, thanks. I haven’t studied it at all, and I didn’t realise it included yet another UI technology.

And honestly, I hate it. I still haven’t come across a browser-based UI that is anything like as rich and functional as can be delivered with WinForms. I don’t know if that’s because of limitations in the technology, or the current trend towards touch-friendly UIs, which I detest when I’m trying to use them on my mouse/keyboard based workstation. But anyway, I mourn the passing of rich WinForms UIs.

1 Like

I agree completely.

Reading here (in the comments) I don’t think that winforms is legacy.

the comment I mean:

We at Microsoft do not see Windows Forms as a “legacy” stack. We started heavily investing in this area by open sourcing it, moving to .NET Core and integrating with modern offerings such as App Center, MSIX, XAML Islands, etc. Windows Forms will be supported in the future platform .NET 5 that will be released in November 2020 and will receive all the latest updates, new language features, performance and runtime improvements.

1 Like

The messages from Microsoft are mixed …

Here a complete(?) list:
Microsoft

Elements

Third party cross platform

@mh. @ck, did I miss anything?

1 Like

Actually UWP is deprecated/legacy by now as well, as far as I know, and MS is rowing back on calling WPF legacy.

My personal recommendation for a native Windows app would be WPF. It’s the most flexible and versatile, and it’s what we used for Water.

1 Like

Thanks, Friedrich.

So WinForms might not be legacy yet. I guess the original question remains: which do you prefer - WinForms or WPF?

Then it is time to learn WPF :frowning:

2 Likes

I still prefer winforms, easy and fast.
But not suitable for a beautiful UI or DPI scaling - for that you need WPF.
(Winforms can do some DPI scaling, but it remains an added feature).

So my advise (completely biased) for Windows applications:

  • LOB applications: WinForms
  • Windows applications for End users: WPF
2 Likes

For Web Applications, does .NET world have good framework like Delphi’s uniGui, which wraps Sencha ExtJS? Or similar?

I have no experience with this, so I can not give any advice on this part.

Going the “let’s just embed chrome” web hi approach is a terrible idea on just about every level. Use WPF, seriosily.

Understand. But uniGui framework is not about embedding chrome or a browser in a desktop app.

It is actually for making a server for making browser-server applications. It encapsulates ExtJS very nicely so we can develop web applications just like what we use to do with VCL. I found it very easy to use.

I am curiously that if in .NET world there is a similar framework.

I consider uniGui and mORMot the best two gems from Delphi world.