VisualStudio2019中為.NET Core WinForm App啟用窗體設(shè)計器
當(dāng)我們在使用 Visual Studio 2019 非預(yù)覽版本開發(fā) Windows Forms App (.NET Core) 應(yīng)用程序時是不能使用窗體設(shè)計器的。即使在窗體文件上右擊選擇“顯示設(shè)計器”菜單,仍舊只能看到代碼,無法打開窗體設(shè)計器。
根據(jù)微軟開發(fā)者博客的描述,我們可以使用 Visual Studio 2019 預(yù)覽通道,將 Visual Studio 2019 更新至 16.6 來啟用設(shè)計器(參見:Updates on .NET Core Windows Forms designer)。
在不啟用預(yù)覽通道的情況下,我們?nèi)匀豢梢酝ㄟ^更改項目文件來讓項目支持窗體設(shè)計器。
當(dāng)我們新建一個 .NET Core Windows Forms 程序時,我們的項目文件(*.csproj)通常包含以下內(nèi)容:
<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 中使用設(shè)計器,可以使用TargetFrameworks
標簽來讓項目支持多個目標框架:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks> <UseWindowsForms>true</UseWindowsForms> </PropertyGroup> </Project>
保存更改后,Visual Studio 可能會提示重新加載。確認重新加載,窗體設(shè)計器就可以使用了:
通過為項目增加 .NET Framework 目標框架來啟用設(shè)計器
做完這一步,我們的代碼會無法通過編譯。這是因為項目中使用了一個新的 API :SetHighDpiMode
,但是 .NET Framework 4.7.2 并不支持??梢酝ㄟ^條件編譯來限定對SetHighDpiMode
的調(diào)用僅在 .NET Core APP 下生效。當(dāng)目標框架是 .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()); }
點擊“調(diào)試”按鈕的下拉項對目標框架進行切換:
切換調(diào)試項目的目標框架
程序運行起來后,效果令人滿意:
.NET Core Windows Forms 運行效果
到此這篇關(guān)于VisualStudio2019中為.NET Core WinForm App啟用窗體設(shè)計器的文章就介紹到這了,更多相關(guān).NET Core WinForm App啟用窗體設(shè)計器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
asp.net(C#)防sql注入組件的實現(xiàn)代碼
經(jīng)常要寫一些.net的程序,對于數(shù)據(jù)庫的防注入要求要比較高。這時我從網(wǎng)上搜了一些代碼。查看了一下主要是通過HTTPModel來進行對客戶端轉(zhuǎn)過來的數(shù)據(jù)進行處理。2009-12-12asp.net 抓取網(wǎng)頁源碼三種實現(xiàn)方法
asp.net 抓取網(wǎng)頁源碼三種實現(xiàn)方法,需要的朋友可以參考一下2013-06-06C#開發(fā)微信 二維碼鼠標滑動 圖像顯示隱藏效果(推薦)
客戶端微信在二維碼狀態(tài)下,鼠標滑過,會有一張手機的圖片滑動滑出,從隱藏到顯示,從顯示到隱藏。效果非常棒,本文思路介紹明確,感興趣的朋友一起看看吧2016-11-11ASP.NET 4中的可擴展輸出緩存(可以緩存頁面/控件等)
ASP.NET 1.0引入輸出緩存的概念,這使得開發(fā)者可以緩存頁面、控件、控制器以及HTTP響應(yīng)的輸出到內(nèi)存中,接下來詳細介紹,感興趣的朋友可以了解下2013-01-01asp.net TextBox回車觸發(fā)事件 圖片在img顯示
TextBox回車觸發(fā)事件 數(shù)據(jù)庫取圖片在img顯示2009-10-10ASP.NET生成兩個日期范圍內(nèi)隨機時間的實現(xiàn)方法
這篇文章主要介紹了ASP.NET生成兩個日期范圍內(nèi)隨機時間的實現(xiàn)方法,通過自定義函數(shù)記錄開始時間與結(jié)束時間確定時間范圍進而生成該時間段的隨機時間,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12ASP.NET Core 2.0中Razor頁面禁用防偽令牌驗證
在這篇短文中,我將向您介紹如何ASP.NET Core2.0 Razor頁面中禁用防偽令牌驗證,對此有興趣的朋友參考學(xué)習(xí)下吧。2018-01-01