Aracılığıyla paylaş


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.

COM Birlikte Çalışma.

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:

Ayrıca bkz.