Apa yang baru untuk .NET 8 (Formulir Windows .NET)
Artikel ini menjelaskan beberapa fitur dan penyempurnaan Formulir Windows baru di .NET 8.
Ada beberapa perubahan yang melanggar yang harus Anda waspadai saat bermigrasi dari .NET Framework ke .NET 8. Untuk informasi selengkapnya, lihat Melanggar perubahan di Formulir Windows.
Peningkatan pengikatan data
Mesin pengikatan data baru dalam pratinjau dengan .NET 7, dan sekarang diaktifkan sepenuhnya di .NET 8. Meskipun tidak seluas mesin pengikatan data Formulir Windows yang ada, mesin baru ini dimodelkan setelah WPF, yang membuatnya lebih mudah untuk menerapkan prinsip desain MVVM.
Kemampuan pengikatan data yang ditingkatkan memudahkan untuk sepenuhnya menggunakan pola MVVM dan menggunakan pemeta hubungan objek dari ViewModels di Formulir Windows. Ini mengurangi jumlah kode dalam file code-behind. Lebih penting lagi, ini memungkinkan berbagi kode antara Formulir Windows dan kerangka kerja GUI .NET lainnya seperti WPF, UWP/WinUI, dan .NET MAUI. Penting untuk dicatat bahwa meskipun kerangka kerja GUI yang disebutkan sebelumnya menggunakan XAML sebagai teknologi UI, XAML tidak akan Formulir Windows.
Antarmuka IBindableComponent dan BindableComponent kelas mendorong sistem pengikatan baru. Controlmengimplementasikan antarmuka dan menyediakan kemampuan pengikatan data baru untuk Formulir Windows.
Perintah tombol
Perintah tombol berada dalam pratinjau dengan .NET 7, dan sekarang diaktifkan sepenuhnya di .NET 8. Mirip dengan WPF, instans ICommand objek yang mengimplementasikan antarmuka dapat ditetapkan ke properti tombol Command . Saat tombol diklik, perintah dipanggil.
Parameter opsional dapat disediakan saat perintah dipanggil, dengan menentukan nilai untuk properti tombol CommandParameter .
Properti Command
dan CommandParameter
diatur dalam perancang melalui jendela Properti , di bawah (DataBindings), seperti yang diilustrasikan oleh gambar berikut.
Tombol juga mendengarkan ICommand.CanExecuteChanged peristiwa, yang menyebabkan kontrol mengkueri ICommand.CanExecute metode. Ketika metode tersebut mengembalikan true
, kontrol diaktifkan; kontrol dinonaktifkan saat false
dikembalikan.
Peningkatan Visual Studio DPI
Visual Studio 2022 17.8 Memperkenalkan tab desainer yang tidak sadar DPI. Sebelumnya, tab Windows Designer di Visual Studio berjalan di DPI Visual Studio. Ini menyebabkan masalah saat Anda merancang aplikasi Formulir Windows yang tidak diketahui DPI. Sekarang Anda dapat memastikan bahwa perancang berjalan pada skala yang sama seperti yang Anda inginkan untuk dijalankan aplikasi, baik yang sadar DPI atau tidak. Sebelum fitur ini diperkenalkan, Anda harus menjalankan Visual Studio dalam mode DPI-unaware, yang membuat Visual Studio sendiri buram saat penskalaan diterapkan di Windows. Sekarang Anda dapat meninggalkan Visual Studio sendiri dan membiarkan perancang menjalankan DPI-unaware.
Anda dapat mengaktifkan perancang DPI-unaware untuk proyek Formulir Windows dengan menambahkan <ForceDesignerDPIUnaware>
ke file proyek, dan mengatur nilai ke true
.
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
<ApplicationHighDpiMode>DpiUnawareGdiScaled</ApplicationHighDpiMode>
</PropertyGroup>
Penting
Visual Studio membaca pengaturan ini saat proyek dimuat, dan bukan saat diubah. Setelah mengubah pengaturan ini, bongkar dan muat ulang proyek Anda untuk mendapatkan Visual Studio untuk menghormatinya.
Peningkatan DPI tinggi
Penyajian DPI tinggi dengan PerMonitorV2 telah ditingkatkan:
Menskalakan kontrol berlapis dengan benar. Misalnya, tombol yang ada di panel, yang ditempatkan di halaman tab.
Skala Form.MaximumSize dan Form.MinimumSize properti berdasarkan pengaturan DPI monitor saat ini.
Dimulai dengan .NET 8, fitur ini diaktifkan secara default dan Anda perlu menolaknya untuk kembali ke perilaku sebelumnya.
Untuk menonaktifkan fitur, tambahkan
System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
keconfigProperties
pengaturan di runtimeconfig.json, dan atur nilai ke false:{ "runtimeOptions": { "tfm": "net8.0", "frameworks": [ ... ], "configProperties": { "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false, } } }
Perbaikan lain-lain
Berikut adalah beberapa perubahan penting lainnya:
- Kode yang ditangani
FolderBrowserDialog
ditingkatkan, memperbaiki beberapa kebocoran memori. - Basis kode untuk Formulir Windows telah secara perlahan mengaktifkan nullability C#, membasahkan potensi kesalahan referensi null.
- Kode
System.Drawing
sumber dimigrasikan ke repositori GitHub Formulir Windows. - Ikon Windows modern dapat diakses oleh API baru, System.Drawing.SystemIcons.GetStockIcon. Enumerasi System.Drawing.StockIconId mencantumkan semua ikon sistem yang tersedia.
- Lebih banyak desainer tersedia pada run-time sekarang. Untuk informasi selengkapnya, lihat Masalah GitHub #4908.
.NET Desktop feedback