溫故知新,.Net Core遇見WinForms(Windows Form)客戶端窗體框架,在DotNet Core大一統基礎上老樹發芽


什么是WinForm

https://docs.microsoft.com/zh-cn/dotnet/desktop/winforms

Windows窗體(Windows Form),簡稱WinForms,是一個可創建適用於Windows的豐富桌面客戶端應用的UI框架。Windows窗體開發平台支持廣泛的應用開發功能,包括控件、圖形、數據綁定和用戶輸入。 Windows 窗體采用Visual Studio中的拖放式可視化設計器,可輕松創建Windows窗體應用。

image

WinForm的來世今生

說起WinForm,其實很多現在的程序員已經是不用它了,原因是其實它已經是老爺爺了,微軟推出WinForms之后,繼而推出了WPFUWPWinUIMAUI等更新的客戶端應用框架。

image

但是論資歷,在Windows平台,先是經歷了Windows API + C,江湖人稱Win32,隨后C++的發展,誕生了經典的MFC(Microsoft Foundation Class),配合C++,還是不錯的。

Windows API && C - 最早的開發Windows GUI程序的思路。用C語言直接調用Windows操作系統提供的API函數來開發,程序員處理Windows消息。經歷過這段開發時期的程序員一般對底層比較清楚,要了解Windows操作系統的工作原理。

MFC && C++ - Microsoft Foundation Class(MFC),微軟用C++封裝了Win32 API, C++程序員通過使用MFC類庫來開發,面向對象的編程方法。

后來,隨着.Net平台的壯大和發展,微軟為了簡化開發門檻,把Windows API封裝成了控件,誕生了我們今天要說的Windows窗體(Windows Form)這項技術,並且搭配全新的C#語言使用。

但是,隨着應用的復雜話,微軟也意識到了WinForm的一些弊端,於是從.Net Framework 3.0開始,推出了能支持MVVM模式,並靠數據驅動界面的新框架WPF(Windows Presentation Foundation),相較於前輩的消息驅動、事件驅動模式,基於數據驅動的開發方式大大提高了編程效率,也更利於多工種和團隊協作。

雖然,后續伴隨着Windows 10發布了全新的UWP、Windows 11發布了WinUI、MAUI等框架,但是都是繼續建立在數據驅動的開發思想上的。

到了2021年了,隨着.Net Core的發展和生態需要,微軟回頭來,讓WinForm這么一門較老的客戶端窗體框架,老樹發芽,喚來新生,大概是從.Net Core 3.1開始,WinForm正式被納入.Net Core支持的范疇。

所以,今天的角度來看WinForms,其實際上具備兩個實現版本:

1. 托管於GitHub上的開放源代碼實現。

https://github.com/dotnet/winforms

此版本在.NET 5.NET Core 3.1上運行。Windows窗體可視化設計器最低要求Visual Studio 2019版本16.8預覽版。

2. 受Visual Studio 2019和Visual Studio 2017支持的.NET Framework 4實現。

.NET Framework 4是僅限Windows的.NET版本,被視為一個Windows操作系統組件。此版本的Windows窗體隨.NET Framework一起分發。

創建WinForms應用

https://github.com/TaylorShi/HelloWinForm

基於命令行的創建

1. 新建名為HelloWinForm的解決方案

dotnet new sln -o HelloWinForm

image

2. 切換到HelloWinForm目錄

cd .\HelloWinForm\

3. 創建名為demoForWinForm的WinFroms項目

dotnet new winforms -o demoForWinForm

image

4. 添加demoForWinForm到解決方案

dotnet sln add .\demoForWinForm\demoForWinForm.csproj

image

5. 切換到demoForWinForm目錄

cd .\demoForWinForm\

image

6. 運行demoForWinForm項目

dotnet watch run

image

7. 查看運行效果

image

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>

image

基於Visual Studio的創建

1. 打開Visual Studio創建新項目

image

2. 搜索WinForms項目模板

image

這里可以看到Windows窗體應用(.Net Framework)就是.Net Framework框架的項目模板,而Windows Form App就是.Net Core框架的項目模板。

3. 選擇Windows Form App項目模板進行創建配置,配置項目名為HelloWinForm

image

4. 選擇Framework版本,暫時選擇默認的.Net 5.0預覽

image

5. 創建並打開解決方案

image

6. 運行項目並查看效果

image

image

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>

image

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM