溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

VisualStudio2019怎么實(shí)現(xiàn).NET Core WinForm App啟用窗體設(shè)計(jì)器

發(fā)布時(shí)間:2021-03-08 16:19:51 來源:億速云 閱讀:411 作者:TREX 欄目:開發(fā)技術(shù)

這篇文章主要講解了“VisualStudio2019怎么實(shí)現(xiàn).NET Core WinForm App啟用窗體設(shè)計(jì)器”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“VisualStudio2019怎么實(shí)現(xiàn).NET Core WinForm App啟用窗體設(shè)計(jì)器”吧!

當(dāng)我們在使用 Visual Studio 2019 非預(yù)覽版本開發(fā) Windows Forms App (.NET Core) 應(yīng)用程序時(shí)是不能使用窗體設(shè)計(jì)器的。即使在窗體文件上右擊選擇“顯示設(shè)計(jì)器”菜單,仍舊只能看到代碼,無法打開窗體設(shè)計(jì)器。

根據(jù)微軟開發(fā)者博客的描述,我們可以使用 Visual Studio 2019 預(yù)覽通道,將 Visual Studio 2019 更新至 16.6 來啟用設(shè)計(jì)器(參見:Updates on .NET Core Windows Forms designer)。

在不啟用預(yù)覽通道的情況下,我們?nèi)匀豢梢酝ㄟ^更改項(xiàng)目文件來讓項(xiàng)目支持窗體設(shè)計(jì)器。

當(dāng)我們新建一個 .NET Core Windows Forms 程序時(shí),我們的項(xiàng)目文件(*.csproj)通常包含以下內(nèi)容:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
 <PropertyGroup>
 <OutputType>WinExe</OutputType>
 <TargetFramework>netcoreapp3.1</TargetFramework>
 <UseWindowsForms>true</UseWindowsForms>
 </PropertyGroup>
</Project>

TargetFramework標(biāo)簽標(biāo)識我們程序的目標(biāo)框架是.netcoreapp3.1。如果我們的項(xiàng)目同時(shí)可以支持 .NET Framework 那么就可以在 Visual Studio 中使用設(shè)計(jì)器,可以使用TargetFrameworks標(biāo)簽來讓項(xiàng)目支持多個目標(biāo)框架:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
 <PropertyGroup>
 <OutputType>WinExe</OutputType>
 <TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
 <UseWindowsForms>true</UseWindowsForms>
 </PropertyGroup>
</Project>

保存更改后,Visual Studio 可能會提示重新加載。確認(rèn)重新加載,窗體設(shè)計(jì)器就可以使用了:

VisualStudio2019怎么實(shí)現(xiàn).NET Core WinForm App啟用窗體設(shè)計(jì)器

通過為項(xiàng)目增加 .NET Framework 目標(biāo)框架來啟用設(shè)計(jì)器

做完這一步,我們的代碼會無法通過編譯。這是因?yàn)轫?xiàng)目中使用了一個新的 API :SetHighDpiMode,但是 .NET Framework 4.7.2 并不支持??梢酝ㄟ^條件編譯來限定對SetHighDpiMode的調(diào)用僅在 .NET Core APP 下生效。當(dāng)目標(biāo)框架是 .NET Core 時(shí),生成系統(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());
 }

點(diǎn)擊“調(diào)試”按鈕的下拉項(xiàng)對目標(biāo)框架進(jìn)行切換:

VisualStudio2019怎么實(shí)現(xiàn).NET Core WinForm App啟用窗體設(shè)計(jì)器

切換調(diào)試項(xiàng)目的目標(biāo)框架

程序運(yùn)行起來后,效果令人滿意:

VisualStudio2019怎么實(shí)現(xiàn).NET Core WinForm App啟用窗體設(shè)計(jì)器

.NET Core Windows Forms 運(yùn)行效果

感謝各位的閱讀,以上就是“VisualStudio2019怎么實(shí)現(xiàn).NET Core WinForm App啟用窗體設(shè)計(jì)器”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對VisualStudio2019怎么實(shí)現(xiàn).NET Core WinForm App啟用窗體設(shè)計(jì)器這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI