{"slug": "windows-forms", "name": "Windows Forms", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 9, "commenters": 15, "warners": 4, "score": 4.463, "rising": -0.29, "first": "2025-11-05", "latest": "2026-10-27", "why": "binding data to controls was dead simple, it felt surprisingly modern", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 9, "neutral": 1, "compare": 1, "warn": 4}, "spark": [0, 0, 0, 0, 4, 2, 1, 0, 0, 0, 0, 2], "listed": true, "loved": [], "caveat": "", "short_quote": "binding data to controls was dead simple, it felt surprisingly modern", "kind": "", "icon": true, "domain": null, "github_repo": "github.com/dotnet/winforms", "official_url": "https://learn.microsoft.com/en-us/dotnet/desktop/winforms/", "pricing": "", "aliases": ["WinForms", "Windows Forms"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 804048800, "item_id": 50253050, "url": "https://news.ycombinator.com/item?id=50253050", "by": "queenkjuul", "date": "2026-10-27", "stance": "recommend", "quote": "binding data to controls was dead simple, it felt surprisingly modern", "excerpt": "When you say responsive, you mean like it reacts quickly, or it responds to screen size? In web we refer to the latter but i feel you mean the former. I built a toy project in .NET 2005[0] with WinForms and the experience was actually excellent, binding data to controls was dead simple, it felt surprisingly modern. But i can't imagine how I'd make the UI resizable lol [0]https://github.com/queenkjuul/spotify97", "context": "", "use_case": "Desktop UI with .NET", "switched_from": "", "story": "Oldest GUI application that still runs on Windows 11"}, {"id": 768200083, "item_id": 48012505, "url": "https://news.ycombinator.com/item?id=48012505", "by": "jdw64", "date": "2026-05-04", "stance": "recommend", "quote": "the only truly usable products still seem to be WPF and WinForms", "excerpt": "As a .NET developer and a Korean developer, I honestly have very few realistic options other than Windows. But recently, the Windows/.NET UI options feel terrible. Starting with the support situation around WPF, the identity of MAUI as a Xamarin-descended framework feels strange, and WinUI 3 has too many bugs. I honestly do not know what Microsoft wants developers to use. Whether this is internal politics between Mic", "context": ".NET developer in Korea", "use_case": "Windows desktop UI", "switched_from": "", "story": "What is .NET, and why should you choose it?"}, {"id": 762604464, "item_id": 47662779, "url": "https://news.ycombinator.com/item?id=47662779", "by": "electroly", "date": "2026-04-06", "stance": "recommend", "quote": "Windows Forms is the answer you seek", "excerpt": "Windows Forms is the answer you seek. It still receives updates to this day. I've been writing and shipping Windows Forms apps for 25 years. High DPI, dark mode, Edge web views, Blazor integration, we've got it all. Users don't even need to install .NET these days with self-contained deployment. I will boldly claim Windows Forms is more stable than Gtk and Qt. Don't let random teams at Microsoft confuse you because t", "context": "Has shipped Windows Forms apps for 25 years", "use_case": "Windows desktop apps", "switched_from": "", "story": "Microsoft Hasn't Had a Coherent GUI Strategy Since Petzold"}, {"id": 762578880, "item_id": 47661180, "url": "https://news.ycombinator.com/item?id=47661180", "by": "starik36", "date": "2026-04-06", "stance": "recommend", "quote": "WinForms still exist, still supported, still getting new features.", "excerpt": "WinForms still exist, still supported, still getting new features. And it's open sourced. https://github.com/dotnet/winforms", "context": "", "use_case": "Desktop GUI framework", "switched_from": "", "story": "Microsoft Hasn't Had a Coherent GUI Strategy Since Petzold"}, {"id": 759835984, "item_id": 47489749, "url": "https://news.ycombinator.com/item?id=47489749", "by": "SirMaster", "date": "2026-03-23", "stance": "recommend", "quote": "Windows Forms has fully integrated dark mode support.", "excerpt": ">with no dark mode support. https://learn.microsoft.com/en-us/dotnet/desktop/winforms/whats-new/net100 \"Dark mode Windows Forms has fully integrated dark mode support. Windows Forms for .NET 9 introduced preliminary dark mode visual styling, but in an opt-in preview mode where you had to suppress Compiler Error WFO5001 to use the feature. This feature is no longer guarded behind this compiler error starting with .NET", "context": "", "use_case": "", "switched_from": "", "story": "Windows native app development is a mess"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 788765425, "item_id": 49297839, "url": "https://news.ycombinator.com/item?id=49297839", "by": "dadoum", "date": "2026-08-14", "stance": "warn", "quote": "Windows.Forms is becoming less of a problem", "excerpt": "Windows.Forms is becoming less of a problem with projects like LibreWinForms [0] progressing quickly. I just tried to build your project and there are only a few classes that are not implemented when it comes to the GUI. [0] https://github.com/wieslawsoltes/LibreWinForms", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: C# Game Engine with its own scripting language and IDE"}, {"id": 759724786, "item_id": 47482799, "url": "https://news.ycombinator.com/item?id=47482799", "by": "domenicd", "date": "2026-03-22", "stance": "warn", "quote": "WinForms supposedly has some support for high DPI, but with many open issues.", "excerpt": "From what I understand, Win32/MFC/WinForms inherently are stuck around Vista visuals, with no dark mode support. Win32/MFC also have no high-DPI support, so you get gross upscaling. (WinForms supposedly has some support for high DPI, but with many open issues. [1]) Now, I'm not 100% sure, since there are so many commenters in this thread saying \"just use Win32/MFC like a real man\". (Most of them ignoring the memory s", "context": "", "use_case": "", "switched_from": "", "story": "Windows native app development is a mess"}, {"id": 733249057, "item_id": 45828066, "url": "https://news.ycombinator.com/item?id=45828066", "by": "7thaccount", "date": "2025-11-05", "stance": "warn", "quote": "Forget Qt and Windows Forms", "excerpt": "Take a look at what Rebol did in the late 90s. They have a DSL called \"View\" for making user interfaces with your scripts. Rebol itself shipped with a program that came with a ton of sample applications including Tetris. The creator of Rebol (Carl Sassenrath) was also big on the Amiga scene and envisioned what he called iOS (internet operating system, not the Apple iPhone OS) where you would do stuff like load a web ", "context": "", "use_case": "", "switched_from": "", "story": "Radiant Computer"}]}], "who": [{"by": "jdw64", "context": ".NET developer in Korea", "url": "https://news.ycombinator.com/item?id=48012505", "date": "2026-05-04"}, {"by": "electroly", "context": "Has shipped Windows Forms apps for 25 years", "url": "https://news.ycombinator.com/item?id=47662779", "date": "2026-04-06"}, {"by": "stevetron", "context": "former C++ developer", "url": "https://news.ycombinator.com/item?id=47468252", "date": "2026-03-21"}], "tags": [], "use_cases": ["desktop gui", "desktop ui with .net", "windows desktop ui", "windows desktop apps", "desktop gui framework", "windows start menu"], "compared": [{"slug": "wpf", "name": "WPF", "co": 6, "switched_from": 0, "switched_to": 0}, {"slug": "qt", "name": "Qt", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "avalonia", "name": "Avalonia", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "win32", "name": "Win32", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "tk", "name": "Tk", "co": 1, "switched_from": 0, "switched_to": 1}, {"slug": "mfc", "name": "MFC", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=47475938", "title": "Windows native app development is a mess", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=47651703", "title": "Microsoft Hasn't Had a Coherent GUI Strategy Since Petzold", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=50248055", "title": "Oldest GUI application that still runs on Windows 11", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=47463884", "title": "Windows 11's Start menu was built using React \u2013 now switching to native WinUI", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49258085", "title": "Show HN: C# Game Engine with its own scripting language and IDE", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48011667", "title": "What is .NET, and why should you choose it?", "mentions": 1}], "sentiment_by_month": {"2025-11": {"warn": 1, "neutral": 1}, "2025-12": {}, "2026-01": {}, "2026-02": {"warn": 1}, "2026-03": {"recommend": 4, "warn": 1}, "2026-04": {"compare": 1, "recommend": 2}, "2026-05": {"recommend": 1}, "2026-06": {}, "2026-07": {}, "2026-08": {"warn": 1}, "2026-09": {}, "2026-10": {"recommend": 2}}, "quotes": [{"id": 804216784, "item_id": 50263549, "url": "https://news.ycombinator.com/item?id=50263549", "by": "WorldMaker", "date": "2026-10-27", "stance": "recommend", "quote": "", "excerpt": "WinForms provided some responsive control patterns like \"anchors\" and \"dock\" properties [0] and other sorts of relative positioning. Some third party component libraries included even more advanced layout controls. A lot of applications would add in imperative code to make up for more complex scenarios that anchors/dock didn't handle well enough. WinForms was still built on the back of pixel-perfect positioning assum", "context": "", "use_case": "Desktop GUI", "switched_from": "", "story": "Oldest GUI application that still runs on Windows 11"}, {"id": 804048800, "item_id": 50253050, "url": "https://news.ycombinator.com/item?id=50253050", "by": "queenkjuul", "date": "2026-10-27", "stance": "recommend", "quote": "binding data to controls was dead simple, it felt surprisingly modern", "excerpt": "When you say responsive, you mean like it reacts quickly, or it responds to screen size? In web we refer to the latter but i feel you mean the former. I built a toy project in .NET 2005[0] with WinForms and the experience was actually excellent, binding data to controls was dead simple, it felt surprisingly modern. But i can't imagine how I'd make the UI resizable lol [0]https://github.com/queenkjuul/spotify97", "context": "", "use_case": "Desktop UI with .NET", "switched_from": "", "story": "Oldest GUI application that still runs on Windows 11"}, {"id": 788765425, "item_id": 49297839, "url": "https://news.ycombinator.com/item?id=49297839", "by": "dadoum", "date": "2026-08-14", "stance": "warn", "quote": "Windows.Forms is becoming less of a problem", "excerpt": "Windows.Forms is becoming less of a problem with projects like LibreWinForms [0] progressing quickly. I just tried to build your project and there are only a few classes that are not implemented when it comes to the GUI. [0] https://github.com/wieslawsoltes/LibreWinForms", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: C# Game Engine with its own scripting language and IDE"}, {"id": 768200083, "item_id": 48012505, "url": "https://news.ycombinator.com/item?id=48012505", "by": "jdw64", "date": "2026-05-04", "stance": "recommend", "quote": "the only truly usable products still seem to be WPF and WinForms", "excerpt": "As a .NET developer and a Korean developer, I honestly have very few realistic options other than Windows. But recently, the Windows/.NET UI options feel terrible. Starting with the support situation around WPF, the identity of MAUI as a Xamarin-descended framework feels strange, and WinUI 3 has too many bugs. I honestly do not know what Microsoft wants developers to use. Whether this is internal politics between Mic", "context": ".NET developer in Korea", "use_case": "Windows desktop UI", "switched_from": "", "story": "What is .NET, and why should you choose it?"}, {"id": 762604464, "item_id": 47662779, "url": "https://news.ycombinator.com/item?id=47662779", "by": "electroly", "date": "2026-04-06", "stance": "recommend", "quote": "Windows Forms is the answer you seek", "excerpt": "Windows Forms is the answer you seek. It still receives updates to this day. I've been writing and shipping Windows Forms apps for 25 years. High DPI, dark mode, Edge web views, Blazor integration, we've got it all. Users don't even need to install .NET these days with self-contained deployment. I will boldly claim Windows Forms is more stable than Gtk and Qt. Don't let random teams at Microsoft confuse you because t", "context": "Has shipped Windows Forms apps for 25 years", "use_case": "Windows desktop apps", "switched_from": "", "story": "Microsoft Hasn't Had a Coherent GUI Strategy Since Petzold"}, {"id": 762578880, "item_id": 47661180, "url": "https://news.ycombinator.com/item?id=47661180", "by": "starik36", "date": "2026-04-06", "stance": "recommend", "quote": "WinForms still exist, still supported, still getting new features.", "excerpt": "WinForms still exist, still supported, still getting new features. And it's open sourced. https://github.com/dotnet/winforms", "context": "", "use_case": "Desktop GUI framework", "switched_from": "", "story": "Microsoft Hasn't Had a Coherent GUI Strategy Since Petzold"}, {"id": 762527761, "item_id": 47657985, "url": "https://news.ycombinator.com/item?id=47657985", "by": "functional_dev", "date": "2026-04-06", "stance": "compare", "quote": "what surprised me is how different the rendering architecture is for each framework.", "excerpt": "what surprised me is how different the rendering architecture is for each framework. Win32 -> message loops & GDI Winforms -> managed C# via P/Invoke WPF -> throwse all away and uses DirectX UWP -> Appcontainer sandboxing WinUI -> decouples from OS entirely This visual breakdown helped me to see it clearly - https://vectree.io/c/evolution-of-windows-gui-frameworks-from-win32-to-winui-3", "context": "", "use_case": "", "switched_from": "", "story": "Microsoft Hasn't Had a Coherent GUI Strategy Since Petzold"}, {"id": 759835984, "item_id": 47489749, "url": "https://news.ycombinator.com/item?id=47489749", "by": "SirMaster", "date": "2026-03-23", "stance": "recommend", "quote": "Windows Forms has fully integrated dark mode support.", "excerpt": ">with no dark mode support. https://learn.microsoft.com/en-us/dotnet/desktop/winforms/whats-new/net100 \"Dark mode Windows Forms has fully integrated dark mode support. Windows Forms for .NET 9 introduced preliminary dark mode visual styling, but in an opt-in preview mode where you had to suppress Compiler Error WFO5001 to use the feature. This feature is no longer guarded behind this compiler error starting with .NET", "context": "", "use_case": "", "switched_from": "", "story": "Windows native app development is a mess"}, {"id": 759724786, "item_id": 47482799, "url": "https://news.ycombinator.com/item?id=47482799", "by": "domenicd", "date": "2026-03-22", "stance": "warn", "quote": "WinForms supposedly has some support for high DPI, but with many open issues.", "excerpt": "From what I understand, Win32/MFC/WinForms inherently are stuck around Vista visuals, with no dark mode support. Win32/MFC also have no high-DPI support, so you get gross upscaling. (WinForms supposedly has some support for high DPI, but with many open issues. [1]) Now, I'm not 100% sure, since there are so many commenters in this thread saying \"just use Win32/MFC like a real man\". (Most of them ignoring the memory s", "context": "", "use_case": "", "switched_from": "", "story": "Windows native app development is a mess"}, {"id": 759681856, "item_id": 47480116, "url": "https://news.ycombinator.com/item?id=47480116", "by": "pjmlp", "date": "2026-03-22", "stance": "neutral", "quote": "It does, but many still think it is like using VB 6", "excerpt": "It does, but many still think it is like using VB 6 and don't learn the additional APIs that provide that support, e.g. FlowLayoutPanel and TableLayoutPanel. And for HiDPI, https://learn.microsoft.com/en-us/dotnet/desktop/winforms/high-dpi-support-in-windows-forms", "context": "", "use_case": "", "switched_from": "", "story": "Windows native app development is a mess"}, {"id": 759652736, "item_id": 47478296, "url": "https://news.ycombinator.com/item?id=47478296", "by": "bob1029", "date": "2026-03-22", "stance": "recommend", "quote": "I don't think it's abandoned", "excerpt": "I don't think it's abandoned and it looks like there is a lot of activity around the high DPI concern. https://github.com/dotnet/winforms/issues?q=is%3Aissue%20state%3Aopen%20label%3Aarea-HDPI-SA", "context": "", "use_case": "", "switched_from": "", "story": "Windows native app development is a mess"}, {"id": 759492032, "item_id": 47468252, "url": "https://news.ycombinator.com/item?id=47468252", "by": "stevetron", "date": "2026-03-21", "stance": "recommend", "quote": "the start menu could have been written in C#, WinForms, and have been far less troublesome", "excerpt": "I don't know anything about React. I used to do everything in C++, and I was really happy when I could do embedded projects in C instead of assembler. With that said, I really like C#, even if I can't stand some of the directions it's grown into, and I think that the start menu could have been written in C#, WinForms, and have been far less troublesome.", "context": "former C++ developer", "use_case": "Windows Start menu", "switched_from": "", "story": "Windows 11's Start menu was built using React \u2013 now switching to native WinUI"}, {"id": 759435429, "item_id": 47464714, "url": "https://news.ycombinator.com/item?id=47464714", "by": "pjmlp", "date": "2026-03-21", "stance": "recommend", "quote": "better use Win32, Forms, WPF, Avalonia, Qt,...", "excerpt": "People stop believing in anything related to WinUI coming from Microsoft marketing machine. Besides examples like this one. The amount of issues on Github across all WinUI related tools, keeps increasing all over the place, there is almost no visible activity, the community calls have been a disaster with Q&A being ignored, team rotation, whatever. Native AOT still cannot do what .NET Native did (there is a CsWinRT 3", "context": "", "use_case": "", "switched_from": "", "story": "Windows 11's Start menu was built using React \u2013 now switching to native WinUI"}, {"id": 749658514, "item_id": 46853657, "url": "https://news.ycombinator.com/item?id=46853657", "by": "valorzard", "date": "2026-02-02", "stance": "warn", "quote": "", "excerpt": "From what I can tell taking to people in the discord and stuff, people seem to do it all the time and not run into any issues. Still, it would be neat if they got off winforms and switched to something like Avalonia", "context": "", "use_case": "", "switched_from": "", "story": "Adventure Game Studio: OSS software for creating adventure games"}, {"id": 734322660, "item_id": 45895166, "url": "https://news.ycombinator.com/item?id=45895166", "by": "Kyrio", "date": "2025-11-11", "stance": "neutral", "quote": "stuck with tried and tested solutions like WinForms with proprietary controls", "excerpt": "These days, I think Microsoft's web-based desktop apps mostly use WebView2 directly instead of Electron, so they don't have to bundle a browser. I think for Teams it happened at the same time that they moved from Angular to React. The point about them not using MAUI still stands though. From what I understand, the .NET world has either adopted different abstractions like Avalonia, or stuck with tried and tested solut", "context": "", "use_case": "", "switched_from": "", "story": ".NET MAUI is coming to Linux and the browser"}, {"id": 733249057, "item_id": 45828066, "url": "https://news.ycombinator.com/item?id=45828066", "by": "7thaccount", "date": "2025-11-05", "stance": "warn", "quote": "Forget Qt and Windows Forms", "excerpt": "Take a look at what Rebol did in the late 90s. They have a DSL called \"View\" for making user interfaces with your scripts. Rebol itself shipped with a program that came with a ton of sample applications including Tetris. The creator of Rebol (Carl Sassenrath) was also big on the Amiga scene and envisioned what he called iOS (internet operating system, not the Apple iPhone OS) where you would do stuff like load a web ", "context": "", "use_case": "", "switched_from": "", "story": "Radiant Computer"}]}