Windows Forms ve Yönetilmeyen Uygulamalara Genel Bakış
Windows Forms uygulamaları ve denetimleri, bazı uyarılar ile yönetilmeyen uygulamalarla birlikte çalışabilir. Aşağıdaki bölümlerde, Windows Forms uygulamalarının ve denetimlerinin desteklediği senaryolar ve yapılandırmalar ve desteklemedikleri yapılandırmalar açıklanmaktadır.
Windows Forms Denetimleri ve ActiveX Uygulamaları
Microsoft Internet Explorer ve Microsoft Foundation Sınıfları (MFC) dışında, ActiveX denetimlerini barındırmak için tasarlanmış uygulamalarda Windows Forms denetimleri desteklenmez. Visual Studio .NET 2003'ten önceki Visual Studio sürümlerinden ActiveX test kapsayıcıları da dahil olmak üzere ActiveX denetimlerini barındırabilen diğer uygulamalar ve geliştirme araçları, Windows Forms denetimleri için ana bilgisayarlar desteklenmez.
Bu kısıtlamalar, Bileşen Nesne Modeli COM birlikte çalışma aracılığıyla Windows Forms denetimlerinin kullanılması için de geçerlidir. WINDOWS Forms denetiminin COM çağrılabilen sarmalayıcı (CCW) aracılığıyla kullanılması yalnızca Internet Explorer'da desteklenir. COM birlikte çalışma hakkında daha fazla bilgi için bkz.
Aşağıdaki tabloda, Windows Forms denetimleri için kullanılabilir ActiveX barındırma desteği gösterilmektedir.
Windows Forms sürümü | Destek |
---|---|
.NET Framework sürüm 1.0 | Internet Explorer 5.01 ve sonraki sürümleri |
.NET Framework sürüm 1.1 ve üzeri | Internet Explorer 5.01 ve sonraki sürümleri Microsoft Foundation Sınıfları (MFC) 7.0 ve üzeri |
Windows Forms bileşenlerini ActiveX denetimleri olarak barındırma
.NET Framework 1.1'de destek, MFC 7.0 ve sonraki sürümleri içerecek şekilde genişletilmiştir. Bu destek, MFC 7.0 ve üzeri ActiveX denetim kapsayıcısıyla tam olarak uyumlu olan tüm kapsayıcıları içerir.
Ancak, Windows Forms denetimlerinin ActiveX denetimleri olarak kaydedilmesi desteklenmez. Ayrıca, Windows Forms denetimleri için yönteminin çağrılması com.ms.win32.Ole32.CoCreateInstance
desteklenmez. Yalnızca Windows Forms denetimlerinin yönetilen etkinleştirmesi desteklenir. Bir Windows Forms denetimi oluşturduktan sonra, aynı ActiveX denetiminde olduğu gibi bir MFC uygulamasında barındırabilirsiniz.
Yönetilmeyen uygulamanızda Windows Forms denetimlerini kullanmak için yönetilmeyen CLR barındırma API'lerini kullanarak CLR'yi barındırmanız veya C++ birlikte çalışma özelliklerini kullanmanız gerekir. Önerilen çözüm C++ birlikte çalışma özelliklerini kullanmaktır.
COM istemci uygulamalarında Windows Forms
Visual Basic 6.0 uygulaması veya MFC uygulaması gibi bir COM istemci uygulamasından Windows Formu açtığınızda, form beklenmedik şekilde davranabilir. Örneğin, SEKME tuşuna bastığınızda odak bir denetimden başka bir denetime değişmez. Bir komut düğmesi odaktayken ENTER tuşuna bastığınızda, düğmenin Click olayı tetiklenmez. Tuş vuruşları veya fare etkinliği için de beklenmeyen davranışlar yaşayabilirsiniz.
Yönetilmeyen uygulamanın Windows Forms'un düzgün çalışması için gereken ileti döngüsü desteğini uygulamaması nedeniyle bu davranış oluşur. COM istemci uygulaması tarafından sağlanan ileti döngüsü, Windows Forms ileti döngüsünden temel olarak farklıdır.
Uygulamanın ileti döngüsü, bir iş parçacığının ileti kuyruğundan iletileri alan, bunları çeviren ve ardından işlenmek üzere uygulamaya gönderen bir iç program döngüsüdür. Windows Formu için ileti döngüsü, Visual Basic 6.0 uygulamaları ve MFC uygulamaları gibi önceki uygulamaların sağladığı ileti döngüleriyle aynı mimariye sahip değildir. İleti döngüsüne gönderilen pencere iletileri, Windows Form'un beklediğinden farklı işlenebilir. Bu nedenle beklenmeyen davranışlar oluşabilir. Bazı tuş vuruşu bileşimleri çalışmayabilir, bazı fare etkinlikleri çalışmayabilir veya bazı olaylar beklendiği gibi tetiklenmeyebilir.
Birlikte Çalışabilirlik Sorunlarını Çözme
Yöntemini kullanarak Application.Run oluşturulan bir .NET Framework ileti döngüsünde formu görüntüleyerek bu sorunları çözebilirsiniz.
Bir Windows Formunun COM istemci uygulamasından düzgün çalışmasını sağlamak için, bunu bir Windows Forms ileti döngüsünde çalıştırmanız gerekir. Bunu yapmak için aşağıdaki yaklaşımlardan birini kullanın:
Form.ShowDialog Windows Formunu görüntülemek için yöntemini kullanın. Daha fazla bilgi için bkz . How to: Support COM Interop by Displaying a Windows Form with the ShowDialog Method.
Her Windows Formunu yeni bir iş parçacığında görüntüleyin. Daha fazla bilgi için bkz . Nasıl yapılır: Her Windows Formunu Kendi İş Parçacığında Görüntüleyerek COM Birlikte Çalışmasını Destekleme.
Ayrıca bkz.
- Windows Forms ve Yönetilmeyen Uygulamalar
- COM Birlikte Çalışma
- .NET Framework Uygulamalarında COM Birlikte Çalışabilirliği
- COM Birlikte Çalışabilirlik Örnekleri
- Aximp.exe (Windows Forms ActiveX Denetim İçeri Aktarıcı)
- .NET Framework Bileşenlerini COM'da Gösterme
- COM için Bütünleştirilmiş Kod Paketleme
- Bütünleştirilmiş Kodları COM ile Kaydetme
- Nasıl yapılır: ShowDialog Yöntemi ile bir Windows Formunu Görüntüleyerek COM Birlikte Çalışmasını Destekleme
- Nasıl yapılır: Her Windows Formunu Kendi İş Parçacığında Görüntüleyerek COM Birlikte Çalışmasını Destekleme
.NET Desktop feedback
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin