VisualStudio2019中為.NET Core WinForm App啟用窗體設計器
當我們在使用 Visual Studio 2019 非預覽版本開發(fā) Windows Forms App (.NET Core) 應用程序時是不能使用窗體設計器的。即使在窗體文件上右擊選擇“顯示設計器”菜單,仍舊只能看到代碼,無法打開窗體設計器。
根據(jù)微軟開發(fā)者博客的描述,我們可以使用 Visual Studio 2019 預覽通道,將 Visual Studio 2019 更新至 16.6 來啟用設計器(參見:Updates on .NET Core Windows Forms designer)。
在不啟用預覽通道的情況下,我們仍然可以通過更改項目文件來讓項目支持窗體設計器。
當我們新建一個 .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標簽來讓項目支持多個目標框架:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks> <UseWindowsForms>true</UseWindowsForms> </PropertyGroup> </Project>
保存更改后,Visual Studio 可能會提示重新加載。確認重新加載,窗體設計器就可以使用了:

通過為項目增加 .NET Framework 目標框架來啟用設計器
做完這一步,我們的代碼會無法通過編譯。這是因為項目中使用了一個新的 API :SetHighDpiMode,但是 .NET Framework 4.7.2 并不支持??梢酝ㄟ^條件編譯來限定對SetHighDpiMode的調用僅在 .NET Core APP 下生效。當目標框架是 .NET Core 時,生成系統(tǒng)可以識別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());
}
點擊“調試”按鈕的下拉項對目標框架進行切換:

切換調試項目的目標框架
程序運行起來后,效果令人滿意:

.NET Core Windows Forms 運行效果
到此這篇關于VisualStudio2019中為.NET Core WinForm App啟用窗體設計器的文章就介紹到這了,更多相關.NET Core WinForm App啟用窗體設計器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Entity Framework Core中執(zhí)行SQL語句和存儲過程的方法介紹
這篇文章介紹了Entity Framework Core中執(zhí)行SQL語句和存儲過程的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
ASP.NET MVC 3仿Server.Transfer效果的實現(xiàn)方法
這篇文章主要介紹了ASP.NET MVC 3仿Server.Transfer效果的實現(xiàn)方法,需要的朋友可以參考下2015-10-10
linq to sql 中,如何解決多條件查詢問題,答案,用表達式樹! (下)
在上一篇中,我們做了基于linq to sql 的多條件組合查詢,但通過監(jiān)視數(shù)據(jù)庫發(fā)現(xiàn),這樣做的成本比較高,每次都要取出全部的數(shù)據(jù)到內存進行篩選.2011-08-08

