Bu makalede.NET 9 için Windows Forms'taki yenilikler açıklanmaktadır.
Zaman uyumsuz formlar
Önemli
Bu özellik kümesi, Control.InvokeAsyncdışında deneyseldir.
Modern uygulamalar zaman uyumsuz iletişim modelleri gerektirir. .NET'te Windows Forms büyüdükçe, daha fazla bileşen ui iş parçacığında çalıştırmak için bir async yönteme hazırlama gerektirir. Örneğin, WebView2, yerel Windows 10 ve Windows 11 API'leri veya Anlam Çekirdeği gibi modern zaman uyumsuz kitaplıklar gibi denetimler. Başka bir senaryo da WPF, WinUI veya .NET MAUI gibi diğer kullanıcı arabirimi yığınlarından Windows Forms ile yerleşik async MVVM ViewModel'leri paylaşmanız olabilir.
Zaman uyumsuz senaryoları desteklemek için eklenen yeni yöntemlerin listesi aşağıdadır:
Bu API, deneysel olduğundan bir derleyici hatasının arkasında korunur. Hatayı engellemek ve API'ye erişimi etkinleştirmek için proje dosyanıza aşağıdakileri PropertyGroup ekleyin:
BinaryFormatter , hizmet reddine (DoS), bilgilerin açığa çıkmasına veya uzaktan kod yürütülmesine neden olabilecek seri durumdan çıkarma saldırılarına karşı savunmasız olduğundan güvenli olmadığı kabul edilir. Seri durumdan çıkarma güvenlik açıkları iyi anlaşılmadan önce uygulanmıştır ve tasarımı modern güvenlik en iyi yöntemlerini izlemez.
.NET 9'dan başlayarak, bu güvenlik risklerini önlemek için uygulaması kaldırıldı. Kullanıldığında BinaryFormatter , PlatformNotSupportedException özel durum oluşturulur.
Pano ve sürükle bırak işlemleri için verileri seri hale getirme ve en önemlisi Windows Forms Tasarımcısı gibi birçok senaryoda kullanılan BinaryFormatter Windows Forms. Windows Forms, bilinen bir tür kümesiyle belirli kullanım örneklerini işlemek için dahili olarak daha güvenli bir alt kümesi BinaryFormatter kullanmaya devam eder.
.NET 9 için Windows Forms, ikili serileştirmeye farkında olmadan katıldığınız zamanları belirlemenize yardımcı olan çözümleyicilerle birlikte gönderilmektedir.
hakkında BinaryFormatterdaha fazla bilgi için bkz . BinaryFormatter için Windows Forms geçiş kılavuzu.
Koyu mod
Önemli
Bu özellik kümesi deneyseldir.
.NET 10'da desteği sonlandırmak amacıyla Windows Forms'a koyu mod için ön destek eklendi. Renk modu değiştiğinde SystemColors , ile eşleşecek şekilde değiştirilir. Uygulamanın renk modu aşağıdaki değerlerden birine ayarlanabilir:
SystemColorMode.Classic—(varsayılan) Windows Forms'un önceki sürümleriyle aynı ışık modu.
SystemColorMode.System—Windows tarafından ayarlanan açık veya koyu moda dikkat edin.
namespaceMyExampleProject;
staticclassProgram
{
///<summary>/// The main entry point for the application.///</summary>
[STAThread]
staticvoidMain()
{
// To customize application configuration such as set high DPI settings or default font,// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
Application.SetColorMode(SystemColorMode.Dark);
Application.Run(new Form1());
}
}
Bu API, deneysel olduğundan bir derleyici hatasının arkasında korunur. Hatayı engellemek ve API'ye erişimi etkinleştirmek için proje dosyanıza aşağıdakileri PropertyGroup ekleyin:
FolderBrowserDialog artık dizide depolanan birden çok klasör seçmeyi SelectedPaths destekliyor. Birden çok klasörü etkinleştirmek için olarak Multiselectayarlayıntrue.
System.Drawing yeni özellikler ve geliştirmeler
System.Drawing kitaplığında GDI+ efektlerini sarmalama, için ReadOnlySpandestek ve daha iyi birlikte çalışma kodu oluşturma gibi birçok geliştirme vardır.
System.Drawing, GDI+ efektlerini destekler
System.Drawing kitaplığı artık bulanıklaştırma ve renk tonu gibi GDI+ bit eşlem efektlerini destekliyor. Efektler GDI+'nın bir parçası olmuştur ancak şimdiye kadar System.Drawing aracılığıyla gösterilmemiştir.
Efektler yöntemi çağrılarak Bitmap öğesine Bitmap.ApplyEffect(Effect, Rectangle) uygulanır. Efektin uygulanacağı alan için efekti ve isteğe bağlı Rectangle olarak belirtin. Görüntünün tamamını işlemek için kullanın Rectangle.Empty .
olarak trueayarlandığında, form odaksızken denetimle etkileşim kurulabilir.
.NET Core 3.1 yayınlandığında ve Menugibi MainMenu tüm MenuItemilgili denetimler kaldırıldı.
ToolStrip ve ToolStripMenuItem bunun yerine kullanılmalıdır. Bununla birlikte, ToolStripItemiçin ToolStripMenuItemtemel sınıfı, olayının MenuItem.Select yerine geçemedi. Bu olay, öğeyi vurgulamak için fare veya klavye kullanıldığında tetiklendi.
.NET 9, bir menü öğesinin ne zaman vurgulandığını algılamak için kullanılabilen öğesini ekledi ToolStripItem.SelectedChanged.
GitHub'da bizimle işbirliği yapın
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
.NET Desktop feedback geri bildirimi
.NET Desktop feedback, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.