Windows Forms ve Yönetilmeyen Uygulamalara Genel Bakış
Windows Forms uygulamalar ve denetimler, bazı uyarılarla yönetilmeyen uygulamalarla birlikte çalışabilir. aşağıdaki bölümlerde, uygulamaları ve denetimleri Windows Forms uygulamalar ve denetimlerin desteklediği senaryolar ve konfigürasyonlar açıklanır.
Windows Forms denetimleri ve ActiveX uygulamaları
Microsoft ınternet Explorer ve Microsoft Foundation Sınıfları (MFC) dışında Windows Forms denetimleri, ActiveX denetimleri barındırmak için tasarlanan uygulamalarda desteklenmez. Visual Studio .net 2003 'den önceki Visual Studio sürümlerinden ActiveX test kapsayıcıları dahil ActiveX denetimleri barındırmakla kullanabilen diğer uygulamalar ve geliştirme araçları Windows Forms denetimleri için desteklenen konaklar değildir.
bu kısıtlamalar, bileşen nesne modeli COM birlikte çalışabilirliği aracılığıyla Windows Forms denetimlerinin kullanımı için de geçerlidir. COM çağrılabilir sarmalayıcı (CCW) aracılığıyla Windows Forms denetiminin kullanılması yalnızca ınternet Explorer 'da desteklenir. COM birlikte çalışma hakkında daha fazla bilgi için bkz.
aşağıdaki tabloda, Windows Forms denetimleri için ActiveX sağlanan destek sunulmaktadır.
| 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şletildi. bu destek, MFC 7,0 ve daha yeni bir denetim kapsayıcısı ActiveX tamamen uyumlu olan tüm kapsayıcıları içerir.
ancak, Windows Forms denetimlerinin ActiveX denetimleri olarak kaydı desteklenmez. ayrıca, com.ms.win32.Ole32.CoCreateInstance Windows Forms denetimleri için yönteminin çağrılması desteklenmez. yalnızca Windows Forms denetimlerinin yönetilen etkinleştirmesi desteklenir. bir Windows Forms denetimi oluşturduktan sonra, bunu bir ActiveX denetimiyle olduğu gibi bir MFC uygulamasında barındırabilirsiniz.
yönetilmeyen uygulamanızda Windows Forms denetimleri kullanmak için, yönetilmeyen clr barındırma apı 'lerini kullanarak CLR 'yi barındırmalısınız veya C++ birlikte çalışma özelliklerini kullanmalısınız. C++ birlikte çalışma özelliklerinin kullanılması önerilen çözümdür.
COM istemci uygulamalarında Windows Forms
bir Windows formunu bir COM istemci uygulamasından açtığınızda, bir Visual Basic 6,0 uygulaması veya bir MFC uygulaması gibi, form beklenmedik şekilde davranabilir. Örneğin, sekme tuşuna bastığınızda, odak bir denetimden başka bir denetime değişmez. Komut düğmesi odağa sahip olduğunda ENTER tuşuna bastığınızda düğmenin Click olayı oluşturulmaz. Ayrıca, tuş vuruşları veya fare etkinlikleri için beklenmeyen davranışlara da karşılaşabilirsiniz.
bu davranış, yönetilmeyen uygulama Windows Forms doğru çalışması gereken ileti döngüsü desteğini uygulamadığı için oluşur. COM istemci uygulaması tarafından sunulan ileti döngüsü Windows Forms ileti döngüsünden temelde farklıdır.
Bir uygulamanın ileti döngüsü, bir iş parçacığının ileti kuyruğundan iletileri alan, bunları çeviren ve sonra işlenecek uygulamaya gönderen bir iç program döngüsüdür. bir Windows Form için ileti döngüsü, daha önceki uygulamaların yanı sıra Visual Basic 6,0 uygulamaları ve MFC uygulamaları gibi, ileti döngüsüyle aynı mimariye sahip değildir. ileti döngüsüne gönderilen pencere iletileri Windows Form bekleenden farklı şekilde işlenebilir. Bu nedenle, beklenmeyen davranış ortaya çıkabilir. Bazı tuş vuruşu birleşimleri çalışmayabilir, bazı fare etkinlikleri çalışmayabilir veya bazı olaylar beklendiği gibi görüntülenmeyebilir.
Birlikte çalışabilirlik sorunlarını çözme
bu sorunları, yöntemi kullanılarak oluşturulan .NET Framework ileti döngüsünde formu görüntüleyerek çözebilirsiniz Application.Run .
bir Windows formunun bir 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.ShowDialogWindows formunu göstermek için yöntemini kullanın. daha fazla bilgi için, bkz. nasıl yapılır: ShowDialog yöntemi ile bir Windows formu görüntüleyerek COM birlikte çalışmasını destekleme.
her bir Windows formunu yeni bir iş parçacığında görüntüleyin. daha fazla bilgi için, bkz. nasıl yapılır: her bir Windows formunu kendi iş 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 içeri aktarıcı)
- .NET Framework Bileşenlerini COM'da Gösterme
- COM için Derlemeyi Paketleme
- Derlemeleri 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