以下方法來自於微軟github開源專案WinForms:
dotnet/winforms – Using the Classic WinForms Designer in WinForms Core, 請放心使用 .
目前.net core下的 Windows Forms的視覺化設計器(Designer)尚不可用,後續的Visual Studio 2019 Update才會支援該部分的功能。不過目前我們想在vs2019中使用 Designer,有一種臨時解決方法。
可以使用Visual Studio來處理連結檔案(Link files)的功能,並將其WinForms Designer用於Classic Framework (即.net Framework的Win Forms專案)。
具體的解決方法是在同一個 Solution
下建立兩個專案:
- 用於設計WinForms應用程式的.NET Framework應用程式(.net core專案)
- 用於執行WinForms應用程式的.NET Core應用程式(.net Framework 專案)
而兩個應用程式(.net core專案和相應.net Framework 專案)都將取用相同的檔案。
在該方法中,只要新增新的Win Form
或新的UserControl
,就需要在Classic Framework WinForms
專案(.net Framework的Win Forms專案)中重新設定Form
檔案的巢狀層級關係,推薦使用Mad Kristensen的檔案巢狀擴充套件來完成這件事,而不是使用文字編輯器來修補專案檔案(.csproj
檔案),建議事先安裝好該vs
外掛。
完整步驟:
安裝 vs 2019 professional/enterprise版本
先安裝 vs 2019 professional/enterprise版本,安裝好.net core 3.0 SDK,此時試著建立一個.net core下的 win forms 應用,
設定好相關專案名和存放路徑後,會彈出:
在vs的設定裡,勾選.NET core下的”Use preview SDK”
設定完,重啟vs才能生效。
使用vs自帶的模板,選擇其中的 .net core forms 建立Project, 取名為”CoreHelloForm”
此時的檔案目錄為:
在剛建立的Solution中使用vs自帶的模板,選擇其中的.net framework forms新增新的project,取名為”CoreHelloForm.Designer”
此時Solution
中的檔案目錄為:
將.net core form下的Form1 重新命名為 MainForm
此時,選中 .net core form專案,右鍵選擇 “Set as start up project”,按F5執行專案,可看到窗體:
然後點窗體右上角的x
關閉按鈕,停止執行.
測試從命令列是否能正常 build .net core
專案
右鍵 .net core form專案,點選”Open Folder in File Explorer”,
刪除此處的bin
檔案夾
在上方位址列輸入cmd
進入命令列:
輸入dotnet --version
,看是否能看到具體.net core版本,如果沒問題,繼續下麵的步驟。
輸入dotnet build
此時,回到檔案目錄D:\Coding\csProj\CoreHelloForm\CoreHelloForm\bin\Debug\netcoreapp3.0
,雙擊其中的exe檔案,窗體能正常開啟。
刪除專案CoreHelloForm.Designer
中所有Form1相關的檔案
接著選中.net framework
專案CoreHelloForm.Designer
下的Form1
,右鍵點選”Delete”,
會出現下麵這個警告框,點OK
。
在專案`CoreHelloForm.Designer中以”As Link”的方式取用.net core form專案下的MainForm相關檔案
選中專案CoreHelloForm.Designer
,右鍵Add,選”Existing Item”
開啟檔案選擇框之後,選擇.net core專案CoreHelloForm
下的下圖中高亮的3個檔案.
點選Add As Link
。
從Extension market下載並安裝擴充套件 File Nesting
下載地址: File Nesting for VS
下載到的檔案是File_Nesting_v2.6.85.vsix
, 關閉vs,雙擊,勾選上相應版本的vs安裝即可~
使用 File Nesting來修改 Link 的 MainForm相關檔案的層次關係.
先選中檔案MainForm.Designer.cs
和MainForm.resx
,然後右鍵點選 “File Nesting” -> “Auto-nest selected items”
再右鍵點選 “File Nesting” -> “Nest item”,選擇 MainForm
點 OK
繼續.
再進行一次重新命名
將.Designer
專案下的Program.cs
中的Form1
改為MainForm
.
重設啟動項專案
選中專案CoreHelloForm.Designer,右鍵 Rebuild, 選中.net framework專案CoreHelloForm.Designer,右鍵選擇 “Set as start up project”.
關閉 Solution中 專案CoreHelloForm.Designer中MainForm
的幹擾檔案
此時,如果試著雙擊專案CoreHelloForm.Designer中的MainForm.cs
,會彈出如下警告。
那是因為專案CoreHelloForm.Designer中的MainForm.cs
所Link 的與MainForm相關的檔案已經在 專案CoreHelloForm 中 開啟。
我們將已開啟的檔案中與專案CoreHelloForm.Designer
中Form相關的檔案都關閉掉,比如:
試用 Designer
現在,再雙擊專案CoreHelloForm.Designer中的MainForm.cs
,就能看到 Designer 了。
此時,可以進行視覺化編輯了。
比如,我做瞭如下幾處修改:
- 改掉 Form的 Title
- 改掉文字框的內容.
- 改掉窗體的圖示(icon)
按F5
,執行的效果圖為:
專案程式碼已推到github
,歡迎Fork
和star
.
傳送門: .netCore-WinForms_Designer , 如果覺得自己配置起來麻煩,也可以 clone 下來自己體驗一把喔~
朋友會在“發現-看一看”看到你“在看”的內容