在 dotNet WPF 裡面使用 WinForm

文章目錄

需求

本來以為 WinForm (Windows Forms)WPF (Windows Presentation Foundation) 是不相容的, 後來發現不但可以混用, 而且 WPF 可以在同一個 Window 裡面直接叫用 WinForm 的元件, 如下:

環境

  1. Visual Studio Community 2022

作法

  1. 首先要在 .csproj 加上 <UseWindowsForms>true</UseWindowsForms>

    1<Project Sdk="Microsoft.NET.Sdk">
    2<PropertyGroup>
    3    <OutputType>WinExe</OutputType>
    4    <TargetFramework>net7.0-windows</TargetFramework>
    5    <Nullable>enable</Nullable>
    6    <UseWPF>true</UseWPF>
    7    <UseWindowsForms>true</UseWindowsForms>
    8</PropertyGroup>
    9</Project>
    
  2. 如果是整個 .cs 都要用 WinForm, 那在程式宣告加上 using System.Windows.Forms, 就整個程式都可以用

    1using System.Windows.Forms;
    
  3. 如果是只有幾行要用, 那可以在使用的時候直接把整個 namespace 寫進去, 這樣也可以避免同樣的名稱打架. 譬如下面這兩個都叫做 Cursor

    1System.Windows.Forms.Cursor.Position
    2System.Windows.FrameworkElement.Cursor
    

參考

Posts in this Series