Perancang berubah sejak .NET Framework (Windows Forms .NET)
Visual Designer untuk Windows Forms untuk .NET telah memiliki beberapa peningkatan dan perubahan sejak .NET Framework. Perubahan ini sebagian besar memengaruhi perancang kontrol kustom. Artikel ini menjelaskan perbedaan utama dari .NET Framework.
Visual Studio adalah aplikasi berbasis .NET Framework, dan dengan demikian, Visual Designer yang Anda lihat untuk Windows Forms juga didasarkan pada .NET Framework. Dengan proyek .NET Framework, lingkungan Visual Studio dan aplikasi Windows Formyang dirancang, berjalan dalam proses yang sama: devenv.exe. Ini menimbulkan masalah saat Anda bekerja dengan aplikasi .NET (bukan .NET Framework) Windows Form. Kode .NET dan .NET Framework tidak dapat berfungsi dalam proses yang sama. Akibatnya, Windows Forms .NET menggunakan perancang yang berbeda, perancang "di luar proses".
Perancang di luar proses
Perancang di luar proses adalah proses yang disebut DesignToolsServer.exe, dan dijalankan bersama proses devenv.exe Visual Studio. Proses DesignToolsServer.exe berjalan pada versi dan platform .NET yang sama dengan yang telah disiapkan aplikasi Anda ke target, seperti .NET 7 dan x64.
Di perancang Visual Studio, objek proksi .NET Framework dibuat untuk setiap komponen dan kontrol pada perancang, yang berkomunikasi dengan objek .NET nyata dari proyek Anda di perancang DesignToolsServer.exe .
Perancang kontrol
Untuk .NET, perancang kontrol perlu dikodekan dengan Microsoft.WinForms.Designer.SDK
API, tersedia di NuGet. Pustaka ini adalah refaktor perancang .NET Framework untuk .NET. Semua jenis perancang telah dipindahkan ke namespace layanan yang berbeda tetapi nama jenisnya sebagian besar sama. Untuk memperbarui perancang .NET Framework untuk .NET, Anda harus menyesuaikan namespace layanan sedikit.
- Kelas perancang dan jenis terkait lainnya, seperti
ControlDesigner
danComponentTray
, telah berpindah dariSystem.Windows.Forms.Design
namespace keMicrosoft.DotNet.DesignTools.Designers
namespace. - Jenis terkait daftar tindakan di
System.ComponentModel.Design
namespace telah dipindahkan keMicrosoft.DotNet.DesignTools.Designers.Actions
namespace layanan. - Jenis terkait perilaku, seperti pujaan dan snapline, di
System.Windows.Forms.Design.Behavior
namespace telah dipindahkan keMicrosoft.DotNet.DesignTools.Designers.Behaviors
namespace layanan.
Editor jenis kustom
Editor jenis kustom lebih rumit daripada perancang kontrol. Karena proses Visual Studio berbasis .NET Framework, UI apa pun yang ditampilkan dalam konteks Visual Studio juga harus berbasis .NET Framework. Desain ini menimbulkan masalah, misalnya, saat Anda membuat kontrol .NET yang menunjukkan editor jenis kustom yang dipanggil dengan mengklik tombol …
di kisi properti. Dialog tidak dapat ditampilkan dalam konteks Visual Studio.
Perancang di luar proses menangani sebagian besar fitur perancang kontrol, seperti penata, editor jenis bawaan, dan lukisan kustom. Kapan saja Anda perlu menampilkan dialog modal kustom, seperti menampilkan editor jenis baru, Anda perlu mereplikasi komunikasi server klien objek proksi yang disediakan perancang di luar proses. Ini menciptakan lebih banyak overhead daripada sistem .NET Framework lama.
Jika properti kontrol kustom Anda menggunakan editor jenis yang disediakan oleh Windows Forms, Anda dapat menggunakan EditorAttribute untuk menandai properti Anda dengan editor .NET Framework yang sesuai yang Anda inginkan untuk digunakan Visual Studio. Dengan menggunakan editor bawaan, Anda menghindari persyaratan replikasi komunikasi server klien objek proksi yang disediakan oleh perancang di luar proses.
[Editor("System.Windows.Forms.Design.FileNameEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
"System.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public string? Filename { get; set; }
<Editor("System.Windows.Forms.Design.FileNameEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")>
Public Property Filename As String
Membuat editor jenis
Untuk membuat desainer kustom yang menyediakan editor jenis, Anda memerlukan berbagai proyek, seperti yang dijelaskan dalam daftar berikut:
Control
: Proyek ini adalah pustaka kontrol kustom Anda yang berisi kode untuk kontrol Anda. Ini adalah pustaka yang akan dirujuk pengguna saat mereka ingin menggunakan kontrol Anda.Control.Client
: Windows Formuntuk proyek .NET Framework yang berisi dialog antarmuka pengguna perancang kustom Anda.Control.Server
: Windows Formuntuk proyek .NET yang berisi kode perancang kustom untuk kontrol Anda.Control.Protocol
: Proyek .NET Standard yang berisi kelas komunikasi yang digunakan olehControl.Client
proyek danControl.Server
.Control.Package
: Proyek paket NuGet yang berisi semua proyek lainnya. Paket ini diformat dengan cara yang memungkinkan Visual Studio Windows Forms untuk host alat .NET dan menggunakan pustaka kontrol dan desainer Anda.
Bahkan jika editor jenis Anda berasal dari editor yang ada, seperti ColorEditor atau FileNameEditor, Anda masih harus membuat komunikasi server klien objek proksi karena Anda telah menyediakan jenis kelas UI baru yang ingin Anda tampilkan dalam konteks Visual Studio. Namun, kode untuk mengimplementasikan editor jenis tersebut ke Visual Studio jauh lebih sederhana.
Penting
Dokumentasi yang menjelaskan skenario ini secara rinci sedang berlangsung. Hingga dokumentasi tersebut diterbitkan, gunakan posting blog dan sampel berikut untuk memandu Anda dalam membuat, menerbitkan, dan menggunakan struktur proyek ini:
.NET Desktop feedback