Bagikan melalui


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.

Jendela properti Visual Studio menyoroti properti Command dan CommandParameter Tombol Formulir Windows.

Tombol juga mendengarkan ICommand.CanExecuteChanged peristiwa, yang menyebabkan kontrol mengkueri ICommand.CanExecute metode. Ketika metode tersebut mengembalikan true, kontrol diaktifkan; kontrol dinonaktifkan saat falsedikembalikan.

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 ke configProperties 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.