當咱們在使用 Visual Studio 2019 非預覽版本開發 Windows Forms App (.NET Core) 應用程序時是不能使用窗體設計器的。即便在窗體文件上右擊選擇「顯示設計器」菜單,仍舊只能看到代碼,沒法打開窗體設計器。html
根據微軟開發者博客的描述,咱們可使用 Visual Studio 2019 預覽通道,將 Visual Studio 2019 更新至 16.6 來啓用設計器(參見:Updates on .NET Core Windows Forms designer)。windows
在不啓用預覽通道的狀況下,咱們仍然能夠經過更改項目文件來讓項目支持窗體設計器。app
當咱們新建一個 .NET Core Windows Forms 程序時,咱們的項目文件(*.csproj)一般包含如下內容:框架
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <UseWindowsForms>true</UseWindowsForms> </PropertyGroup> </Project>
TargetFramework
標籤標識咱們程序的目標框架是 .netcoreapp3.1
。若是咱們的項目同時能夠支持 .NET Framework 那麼就能夠在 Visual Studio 中使用設計器,可使用 TargetFrameworks
標籤來讓項目支持多個目標框架:spa
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks> <UseWindowsForms>true</UseWindowsForms> </PropertyGroup> </Project>
保存更改後,Visual Studio 可能會提示從新加載。確認從新加載,窗體設計器就可使用了:.net
經過爲項目增長 .NET Framework 目標框架來啓用設計器設計
作完這一步,咱們的代碼會沒法經過編譯。這是由於項目中使用了一個新的 API :SetHighDpiMode
,可是 .NET Framework 4.7.2 並不支持。能夠經過條件編譯來限定對 SetHighDpiMode
的調用僅在 .NET Core APP 下生效。當目標框架是 .NET Core 時,生成系統能夠識別 NETCOREAPP
處理器符號(感謝 @麥殼餅 的提示)。對 Program.cs 文件中 Main 方法的代碼稍做修改便可編譯經過:調試
/// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { #if NETCOREAPP Application.SetHighDpiMode(HighDpiMode.SystemAware); #endif Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FrmMain()); }
點擊「調試」按鈕的下拉項對目標框架進行切換:code
切換調試項目的目標框架orm
程序運行起來後,效果使人滿意:
.NET Core Windows Forms 運行效果