Aracılığıyla paylaş


.NET 8 (Windows Forms .NET) ile ilgili yenilikler

Bu makalede, .NET 8'deki yeni Windows Forms özellikleri ve geliştirmelerinden bazıları açıklanmaktadır.

.NET Framework'ten .NET 8'e geçiş yaparken bilmeniz gereken birkaç hataya neden olan değişiklik vardır. Daha fazla bilgi için bkz . Windows Forms'da hataya neden olan değişiklikler.

Veri bağlama geliştirmeleri

.NET 7 ile yeni bir veri bağlama altyapısı önizleme aşamasındaydı ve artık .NET 8'de tam olarak etkinleştirildi. Mevcut Windows Forms veri bağlama altyapısı kadar kapsamlı olmasa da, bu yeni altyapı WPF'nin ardından modellenmiştir ve bu da MVVM tasarım ilkelerinin uygulanmasını kolaylaştırır.

Geliştirilmiş veri bağlama özellikleri, MVVM desenini tam olarak kullanmayı ve Windows Forms'daki ViewModel'lerden nesne ilişkisel eşleyiciler kullanmayı kolaylaştırır. Bu, arka planda kod dosyalarındaki kod miktarını azaltır. Daha da önemlisi, Windows Forms ile WPF, UWP/WinUI ve .NET MAUI gibi diğer .NET GUI çerçeveleri arasında kod paylaşımını etkinleştirir. Daha önce bahsedilen GUI çerçeveleri ui teknolojisi olarak XAML kullansa da XAML'nin Windows Forms'a gelmeyeceğini unutmayın.

Arabirimi IBindableComponent ve BindableComponent sınıfı yeni bağlama sistemini yönlendirir. Control arabirimini uygular ve Windows Forms'a yeni veri bağlama özellikleri sağlar.

Düğme komutları

Düğme komutları .NET 7 ile önizleme aşamasındaydı ve artık .NET 8'de tamamen etkin. WPF'ye benzer şekilde, arabirimi uygulayan bir nesnenin ICommand örneği düğmenin Command özelliğine atanabilir. Düğmeye tıklandığında komut çağrılır.

Komut çağrıldığında, düğmenin CommandParameter özelliği için bir değer belirtilerek isteğe bağlı bir parametre sağlanabilir.

Command ve CommandParameter özellikleri, aşağıdaki görüntüde gösterildiği gibi( DataBindings) altında Özellikler penceresi aracılığıyla tasarımcıda ayarlanır.

The Visual Studio properties window highlighting a Windows Forms' Button's Command and CommandParameter properties.

Düğmeler de olayı dinler ICommand.CanExecuteChanged ve bu da denetimin yöntemini sorgulamasına ICommand.CanExecute neden olur. Bu yöntem döndürdüğünde true, denetim etkinleştirilir; döndürüldüğünde falsedenetim devre dışı bırakılır.

Visual Studio DPI geliştirmeleri

Visual Studio 2022 17.8 DPI-unwaware tasarımcı sekmelerini tanıtır. Daha önce Visual Studio'daki Windows Tasarım Aracı sekmesi Visual Studio'nun DPI'sinde çalışıyordu. Bu, DPI'nın farkında olmayan bir Windows Forms uygulaması tasarlarken sorunlara neden olur. Artık tasarımcının DPI kullanan veya olmayan uygulamanın çalışmasını istediğiniz ölçekte çalıştığından emin olabilirsiniz. Bu özellik kullanılmadan önce Visual Studio'yu DPI'sız bir modda çalıştırmanız gerekiyordu ve bu da Windows'da ölçeklendirme uygulandığında Visual Studio'nun kendisini bulanıklaştırdı. Artık Visual Studio'yu yalnız bırakabilir ve tasarımcının DPI-unaware çalıştırmasını sağlayabilirsiniz.

Proje dosyasına ekleyerek <ForceDesignerDPIUnaware> ve değerini trueolarak ayarlayarak Windows Forms projesi için DPI-unaware tasarımcısını etkinleştirebilirsiniz.

<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>

Önemli

Visual Studio bu ayarı proje yüklendiğinde okur, değiştirildiğinde okumaz. Bu ayarı değiştirdikten sonra Visual Studio'ya saygı duyması için projenizi kaldırın ve yeniden yükleyin.

Yüksek DPI geliştirmeleri

ile PerMonitorV2 yüksek DPI işleme geliştirildi:

Çeşitli geliştirmeler

Diğer bazı önemli değişiklikler şunlardır:

  • İşlenen FolderBrowserDialog kod geliştirildi ve birkaç bellek sızıntısı düzeltildi.
  • Windows Forms için kod tabanı yavaş yavaş C# null atanabilirliğini etkinleştirerek olası null başvuru hatalarının kökünü oluşturuyordu.
  • Kaynak System.Drawing kod Windows Forms GitHub deposuna geçirildi.
  • Modern Windows simgelerine yeni bir API () System.Drawing.SystemIcons.GetStockIcontarafından erişilebilir. Numaralandırma tüm System.Drawing.StockIconId kullanılabilir sistem simgelerini listeler.
  • Şu anda çalışma zamanında daha fazla tasarımcı kullanılabilir. Daha fazla bilgi için bkz . GitHub sorunu #4908.