温故知新,.Net Core遇见WinForms客户端窗体框架,在DotNet Core大一统基础上老树发芽...
什么是WinForm
https://docs.microsoft.com/zh-cn/dotnet/desktop/winforms
Windows窗體(Windows Form),簡稱WinForms,是一個(gè)可創(chuàng)建適用于Windows的豐富桌面客戶端應(yīng)用的UI框架。Windows窗體開發(fā)平臺(tái)支持廣泛的應(yīng)用開發(fā)功能,包括控件、圖形、數(shù)據(jù)綁定和用戶輸入。Windows 窗體采用Visual Studio中的拖放式可視化設(shè)計(jì)器,可輕松創(chuàng)建Windows窗體應(yīng)用。
WinForm的來世今生
說起WinForm,其實(shí)很多現(xiàn)在的程序員已經(jīng)是不用它了,原因是其實(shí)它已經(jīng)是老爺爺了,微軟推出WinForms之后,繼而推出了WPF、UWP、WinUI、MAUI等更新的客戶端應(yīng)用框架。
但是論資歷,在Windows平臺(tái),先是經(jīng)歷了Windows API + C,江湖人稱Win32,隨后C++的發(fā)展,誕生了經(jīng)典的MFC(Microsoft Foundation Class),配合C++,還是不錯(cuò)的。
Windows API && C?- 最早的開發(fā)Windows GUI程序的思路。用C語言直接調(diào)用Windows操作系統(tǒng)提供的API函數(shù)來開發(fā),程序員處理Windows消息。經(jīng)歷過這段開發(fā)時(shí)期的程序員一般對(duì)底層比較清楚,要了解Windows操作系統(tǒng)的工作原理。
MFC && C++?- Microsoft Foundation Class(MFC),微軟用C++封裝了Win32 API, C++程序員通過使用MFC類庫來開發(fā),面向?qū)ο蟮木幊谭椒ā?/p>
后來,隨著.Net平臺(tái)的壯大和發(fā)展,微軟為了簡化開發(fā)門檻,把Windows API封裝成了控件,誕生了我們今天要說的Windows窗體(Windows Form)這項(xiàng)技術(shù),并且搭配全新的C#語言使用。
但是,隨著應(yīng)用的復(fù)雜話,微軟也意識(shí)到了WinForm的一些弊端,于是從.Net Framework 3.0開始,推出了能支持MVVM模式,并靠數(shù)據(jù)驅(qū)動(dòng)界面的新框架WPF(Windows Presentation Foundation),相較于前輩的消息驅(qū)動(dòng)、事件驅(qū)動(dòng)模式,基于數(shù)據(jù)驅(qū)動(dòng)的開發(fā)方式大大提高了編程效率,也更利于多工種和團(tuán)隊(duì)協(xié)作。
雖然,后續(xù)伴隨著Windows 10發(fā)布了全新的UWP、Windows 11發(fā)布了WinUI、MAUI等框架,但是都是繼續(xù)建立在數(shù)據(jù)驅(qū)動(dòng)的開發(fā)思想上的。
到了2021年了,隨著.Net Core的發(fā)展和生態(tài)需要,微軟回頭來,讓W(xué)inForm這么一門較老的客戶端窗體框架,老樹發(fā)芽,喚來新生,大概是從.Net Core 3.1開始,WinForm正式被納入.Net Core支持的范疇。
所以,今天的角度來看WinForms,其實(shí)際上具備兩個(gè)實(shí)現(xiàn)版本:
1. 托管于GitHub上的開放源代碼實(shí)現(xiàn)。
https://github.com/dotnet/winforms
此版本在.NET 5和.NET Core 3.1上運(yùn)行。Windows窗體可視化設(shè)計(jì)器最低要求Visual Studio 2019版本16.8預(yù)覽版。
2. 受Visual Studio 2019和Visual Studio 2017支持的.NET Framework 4實(shí)現(xiàn)。
.NET Framework 4是僅限Windows的.NET版本,被視為一個(gè)Windows操作系統(tǒng)組件。此版本的Windows窗體隨.NET Framework一起分發(fā)。
創(chuàng)建WinForms應(yīng)用
https://github.com/TaylorShi/HelloWinForm
基于命令行的創(chuàng)建
1. 新建名為HelloWinForm的解決方案
dotnet new sln -o HelloWinForm2. 切換到HelloWinForm目錄
cd .\HelloWinForm\3. 創(chuàng)建名為demoForWinForm的WinFroms項(xiàng)目
dotnet new winforms -o demoForWinForm4. 添加demoForWinForm到解決方案
dotnet sln add .\demoForWinForm\demoForWinForm.csproj5. 切換到demoForWinForm目錄
cd .\demoForWinForm\6. 運(yùn)行demoForWinForm項(xiàng)目
dotnet watch run7. 查看運(yùn)行效果
8. 檢查demoForWinForm.csproj配置
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>net6.0-windows</TargetFramework><Nullable>enable</Nullable><UseWindowsForms>true</UseWindowsForms></PropertyGroup></Project>基于Visual Studio的創(chuàng)建
1. 打開Visual Studio創(chuàng)建新項(xiàng)目
2. 搜索WinForms項(xiàng)目模板
這里可以看到Windows窗體應(yīng)用(.Net Framework)就是.Net Framework框架的項(xiàng)目模板,而Windows Form App就是.Net Core框架的項(xiàng)目模板。
3. 選擇Windows Form App項(xiàng)目模板進(jìn)行創(chuàng)建配置,配置項(xiàng)目名為HelloWinForm
4. 選擇Framework版本,暫時(shí)選擇默認(rèn)的.Net 5.0預(yù)覽
5. 創(chuàng)建并打開解決方案
6. 運(yùn)行項(xiàng)目并查看效果
7. 檢查HelloWinForm.csproj配置
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>net6.0-windows</TargetFramework><Nullable>enable</Nullable><UseWindowsForms>true</UseWindowsForms></PropertyGroup></Project>參考
Windows 窗體文檔
桌面指南(Windows 窗體 .NET)
教程:創(chuàng)建新的 WinForms 應(yīng)用(Windows 窗體 .NET)
.NET Core 3.0 和 3.1 的 Windows 窗體中斷性變更
使用.net core3.0 正式版創(chuàng)建Winform程序
Introducing .NET Core (2021) by Microsoft.NET
WPF的由來
總結(jié)
以上是生活随笔為你收集整理的温故知新,.Net Core遇见WinForms客户端窗体框架,在DotNet Core大一统基础上老树发芽...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 使用EF Core操作层次结构数据
 - 下一篇: MemoryCache 使用不当导致的一