Makale numarası: 839076 - Son Gözden Geçirme: 28 Ekim 2005 Cuma - Gözden geçirme: 3.1

Windows Forms uygulamalarında COM istemci kullandığınızda beklenmeyen davranışlarla karşılaşabilirsiniz

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Microsoft Visual Basic 6.0 uygulaması gibi bir COM istemci uygulaması veya bir Microsoft Foundation Classes (MFC) uygulaması Microsoft Windows Form örneği açtığınızda, Windows .NET formu beklenmedik biçimde davranabilir. Örneğin, SEKME tuşuna bastığınızda, odağın bir denetimden başka bir denetime değiştirmez. Veya, bir komut düğmesi odaklanmışken ENTER tuşuna bastığınızda, düğme olayı tıklatın değil ateşlenmesine. Ayrıca, tuş vuruşları veya fare aktivite, beklenmeyen davranışlarla karşılaşabilirsiniz.

Eski uygulama, .NET Framework Windows Form'u düzgün çalışması için gereken ileti döngüsü desteği uygulamadığından Bu belirtiler ortaya çıkar.

Bu makalede, .NET Framework bir ileti döngüsü Application.Run yöntemini kullanarak oluşturduğunuz formun görüntüleyerek, bu sorunları gidermek açıklamaktadır.

Belirtiler

Bir COM istemci uygulamasından bir Microsoft Windows Form'u örneğini oluşturduğunuzda, formdaki beklenmedik biçimde davranabilir. Bir Microsoft Visual Basic 6.0 uygulaması veya bir Microsoft Foundation Classes (MFC) uygulaması formu örneğini oluşturduğunuzda, SEKME tuşuna bastığınızda, odağın bir denetimden başka bir denetime değiştirmez. Veya, bir komut düğmesi odaklanmışken ENTER tuşuna basarsanız, düğme olayı tıklatın değil ateşlenmesine. Ayrıca, tuş vuruşları veya fare aktivite, beklenmeyen davranışlarla karşılaşabilirsiniz.

Neden

Bu sorun, Windows formu kullanan ileti döngüsü ve COM istemci uygulaması sağlayan bir ileti döngüsü farklı olduğu için oluşur.

Microsoft bu sorunu gidermek için tasarım yaptınız.
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
885446  (http://support.microsoft.com/kb/885446/ ) Düzeltme:, SEKME veya ENTER bir Windows formu .NET Framework 1.1 SP1 çalıştıran bir bilgisayarda tuşuna bastığınızda, beklenmeyen davranışlarla karşılaşabilirsiniz.
Bu makalede, .NET Framework bir ileti döngüsü Application.Run yöntemini kullanarak oluşturduğunuz formun görüntüleyerek, bu sorunu gidermek açıklamaktadır.

Çözüm

Bir .NET Framework ileti döngüsünü başlatmak için aşağıdaki yöntemlerden birini kullanın:

Windows formu görüntülemek için ShowDialog yöntemi kullanın.

Bu, form üzerinde .NET Framework bir ileti döngüsü görüntülemek için kolay çözümüdür. Bunu yapmak için <a0></a0>, .NET Framework bileşeniniz ShowDialog yönteminde çağrıları Göster yöntem çağrıları değiştirin.

ShowDialog yöntemi, önceki uygulamanın ileti döngüsü askıya alır ve form gibi bir iletişim kutusu görüntüler. ShowDialog yöntemi, ana uygulamanın ileti döngüsü askıya alınmış olduğundan, formun iletileri işlemek için yeni bir .NET Framework ileti döngüsü oluşturur. Bunu uygulamak için en az bir kod gerektiren kolay çözüm olmasıdır. Ancak, bu yaklaşımın olumsuz yanı, form modally açılır kullanılır. Bu davranış Windows Form açıkken, çağıran uygulama içinde herhangi bir kullanıcı arabirimi (UI) engeller. Kullanıcı Windows formu kapattığında çalışan Özgeçmiş döngüsü, ileti döngüsü sonlandırılıyor .NET Framework ve daha önceki bir uygulamanın ileti.

Her Windows Form yeni bir iş parçacığı üzerinde görüntüleme

Kendi ileti döngüsü kullanarak, kendi iş parçacığında bir formun her örneği görüntülemek için .NET Framework bileşeni değiştirin. Iş parçacığı çalıştıran birden çok ileti döngüsü bulunamaz. Bu nedenle, istemci uygulamanın ileti döngüsü değiştiremezsiniz. Ancak, .NET Framework bileşen için kendi ileti döngüsü kullanan yeni bir iş parçacığı başlatılamıyor değiştirebilirsiniz.

Not Çok iş parçacıklı programlama uygulama önce dikkatli dikkate gerektiren gelişmiş bir kavram olduğunu. Birden çok iş parçacığı, paylaşılan bir kaynağa erişmesi gereken, bu özellikle geçerlidir. Paylaşılan kaynağa aynı anda birden çok iş parçacığı erişmesi gereken iş parçacığı güvenlik için .NET Framework bileşenleri tasarım emin olun.Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
316136  (http://support.microsoft.com/kb/316136/ ) Birden çok iş parçacığı oluşturma bir ortamda paylaşılan bir kaynağa erişim Visual Basic .NET ile eşitleme
Yeni bir iş parçacığında bir <a0>Windows</a0> formun her örneği oluşturmak için aşağıdaki adımları izleyin:
  1. Microsoft Visual Studio .NET 2003 başlatın.
  2. Bir sınıf kitaplığı oluşturun. Bunu yapmak için şu adımları izleyin:
    1. Yeni bir sınıf kitaplığı proje oluşturmak için Visual Basic .NET 2003 kullanın. COMWinform projenin adı.
    2. Varsayılan Class1.vb dosyasını silin.
    3. Proje) menüsünde Add Class ' ı tıklatın.
    4. COM sınıf şablonu seçin.
    5. Adı kutusuna, COMForm.vb yazın ve sonra da ' ı tıklatın.
    6. Üst sınıf tanımını.
      Imports System.Windows.Forms
      Imports System.Runtime.InteropServices
      önce COMForm.vb dosyanın aşağıdaki kodu ifadeleri yapıştırın.
    7. COMForm sınıf tanımında
          Private frmManager As FormManager
      
          Public Sub ShowForm1()
              ' Call the StartForm method by using a new instance
              ' of the Form1 class.
              StartForm(New Form1)
          End Sub
      
          Private Sub StartForm(ByVal form As Form)
              ' This procedure is used to show all forms
              ' that the client application requests.
              
              ' Later forms will appear on a new message loop.
              If IsNothing(frmManager) Then
                  frmManager = New FormManager
              End If
              frmManager.ShowForm(form)
          End Sub
      
          Protected Overrides Sub Finalize()
              frmManager = Nothing
              MyBase.Finalize()
          End Sub
    8. Proje) menüsünde Add Class ' ı tıklatın.
    9. Sınıf ' ı tıklatın.
    10. Adı kutusuna, FormManager.vb yazın ve Tamam ' ı tıklatın.
    11. Replace the contents of the FormManager.vb file with the following code.
      Imports System.Runtime.InteropServices
      Imports System.Threading
      Imports System.Windows.Forms
      
      <ComVisible(False)> _
      Friend Class FormManager
          Public Sub ShowForm(ByVal form As Form)
              Dim thrd As Thread
              Dim wrapper As FormWrapper
              wrapper = New FormWrapper(form)
              thrd = New Thread(AddressOf wrapper.ShowFormOnNewThread)
              thrd.IsBackground = True
              thrd.ApartmentState = ApartmentState.STA
              thrd.Start()
          End Sub
      
          Private Class FormWrapper
              Private WithEvents appContext As ApplicationContext
              Public Sub New(ByVal form As Form)
                  MyBase.New()
                  appContext = New ApplicationContext(form)
              End Sub
      
              Public Sub ShowFormOnNewThread()
                  Application.Run(appContext)
              End Sub
      
              Private Sub ac_ThreadExit(ByVal sender As Object, ByVal e As System.EventArgs) Handles appContext.ThreadExit
                  appContext.MainForm.Dispose()
                  appContext.MainForm = Nothing
                  appContext.Dispose()
                  appContext = Nothing
              End Sub
          End Class
      End Class
    12. Proje menüsünde Add Windows Form'u tıklatın ve sonra ' ı tıklatın.
    13. Forma, bazı TextBox denetimleri ve komut düğmesi ekleyin.
    14. Aşağıdaki kodu tıklatın olay işleyicisine komut düğmesini.
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
         MessageBox.Show("Clicked button")
      End Sub
      
      ekleyin...
    15. Çözüm oluşturun. Bu adım, proje bu bilgisayardaki COM birlikte çalışma için de kaydeder.
  3. Yürütülebilir bir dosya oluşturun. Bunu yapmak için şu adımları izleyin:
    1. Microsoft Visual Basic 6. 0'ı başlatın.
    2. Yeni bir Standart EXE projesi oluşturun.
    3. Proje menüsünde Başvurular ' ı tıklatın.
    4. Visual Basic .NET çözüm kurulu olduğunda, oluşturulan COMWinform türündeki kitaplığa bir başvuru ekleyin. Bu listede yoksa, tür kitaplığı (.tlb) dosyayı kendiniz bulmak için Gözat ' ı tıklatın.
    5. Bir komut düğmesi, forma ekleyin.
    6. Görünüm menüsünde kodu ' ı tıklatın ve aşağıdaki kodu form modülü. ekleyin
      Option Explicit
      
      Private Sub Command1_Click()
          Dim frm As COMWinform.COMForm
          Set frm = New COMWinform.COMForm
          frm.ShowForm1
      End Sub
      
    7. Dosya menüsünden projeyi derlemek için EXE yap ' ı tıklatın.
  4. Derlenmiş Visual Basic 6.0 yürütülebilir dosyasını çalıştırın.
  5. Düğmeyi tıklatın. Sınıf Kitaplıktan daha önce oluşturduğunuz <a2>Windows</a2> formu belirir.
  6. Bir Windows formundaki <a1>TextBox</a1> denetimlerin odağı ayarlayın ve denetimler arasında taşımak için SEKME tuşuna basın.
Denetimler arasında taşımak için SEKME tuşuna başarıyla çalıştığı bildirimi. Ayrıca, ENTER tuşuna bastığınızda komut düğmesinin tıklatın olay harekete dikkat edin.

.NET Framework bileşeni yeni bir iş parçacığı üzerinde paylaşılan bir iletinin bir döngü oluşturun.

Bu yöntem, bir "Her bir Windows formu, yeni bir iş parçacığı Göster" bölümünde benzer. Ancak, her form kendi iş parçacığında kendi ileti döngüsü kullanarak görüntülemek yerine, bu yöntem, .NET Framework bileşeni yeni yalnızca bir iş parçacığı üzerinde çalışan bir paylaşılan ileti döngü oluşturuyor.

Bu yöntem, standart bir Windows Forms uygulaması çalıştırıyor olması gerekir, davranışı daha doğru bir şekilde temsil eder. Bu tasarımı ayrıca tüm formların üzerinde aynı iş parçacığının çalıştığı için birden fazla form arasında kaynakları paylaşmak kolaylaştırır. "Her bir Windows formu, yeni bir iş parçacığı Göster" bölümündeki çözüm, her form için yeni bir iş parçacığı oluşturur. Bu çözüm, farklı bir formlar arasında kaynak paylaştırma ek iş parçacığı eşitleme kod gerektirir.

Bu yöntem diğer yöntemlerden daha fazla benzer davranışı için Windows Forms uygulaması olduğundan, .NET Framework ileti döngüsü durduğunda istemci uygulamasını açar, tüm .NET Framework formları kapanacak dikkat edin. Kullanıcı için ApplicationContext ana form olarak belirlenmiş formu kapattığında Bu davranış oluşur. ApplicationContext ileti döngüsünü başlatmak için kullanılır.

Aşağıdaki kod örneği, ApplicationContext, ana form bir istemci uygulamasını açar ilk form için ayarlanır. Bu nedenle, bu form örneği, .NET Framework ileti döngüsü çıkar ve tüm diğer Windows Forms kullanıcı kapatır kapanacak.

Paylaşılan ileti döngüsü kullanmak tüm formlar için yeni bir iş parçacığı oluşturmak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Microsoft Visual Studio .NET 2003 başlatın.
  2. Bir sınıf kitaplığı oluşturun. Bunu yapmak için şu adımları izleyin:
    1. Visual Basic .NET 2003 COMWinform adlı yeni bir sınıf kitaplığı proje oluşturmak için kullanın.
    2. Varsayılan Class1.vb dosyasını silin.
    3. Proje) menüsünde Add Class ' ı tıklatın.
    4. COM sınıf şablonu seçin.
    5. Adı kutusuna, COMForm.vb yazın ve sonra da ' ı tıklatın.
    6. Üst sınıf tanımını.
      Imports System.Windows.Forms
      Imports System.Runtime.InteropServices
      önce COMForm.vb dosyanın aşağıdaki kodu ifadeleri yapıştırın.
    7. Sınıf tanımı içinde COMForm
      
          Private WithEvents frmManager As FormManager
      
          Public Sub ShowForm1()
              ' Call the StartForm method by using a new instance
              ' of the Form1 class.
              StartForm(New Form1)
          End Sub
      
          Private Sub StartForm(ByVal frm As Form)
      
              ' This procedure is used to show all forms
              ' that the client application requests. When the first form
              ' is displayed, this code will create a new message
              ' loop that runs on a new thread. The new form will
              ' be treated as the main form.
      
              ' Later forms will be shown on the same message loop.
              If IsNothing(frmManager) Then
                  frmManager = New FormManager(frm)
              Else
                  frmManager.ShowForm(frm)
              End If
          End Sub
      
          Private Sub frmManager_MessageLoopExit() Handles frmManager.MessageLoopExit
              'Release the reference to the frmManager object.
              frmManager = Nothing
          End Sub
      
    8. Proje) menüsünde Add Class ' ı tıklatın.
    9. Sınıf ' ı tıklatın.
    10. Adı kutusuna, FormManager.vb yazın ve Tamam ' ı tıklatın.
    11. FormManager.vb dosyasının içeriğini aşağıdaki kodla değiştirin.
      Imports System.Runtime.InteropServices
      Imports System.Threading
      Imports System.Windows.Forms
      
      <ComVisible(False)> _
      Friend Class FormManager
          ' This class is used so that you can generically pass any
          ' form that you want to the delegate.
      
          Private WithEvents appContext As ApplicationContext
          Private Delegate Sub FormShowDelegate(ByVal form As Form)
          Event MessageLoopExit()
      
          Public Sub New(ByVal MainForm As Form)
              Dim t As Thread
              If IsNothing(appContext) Then
                  appContext = New ApplicationContext(MainForm)
                  t = New Thread(AddressOf StartMessageLoop)
                  t.IsBackground = True
                  t.ApartmentState = ApartmentState.STA
                  t.Start()
              End If
          End Sub
      
          Private Sub StartMessageLoop()
              ' Call the Application.Run method to run the form on its own message loop.
              Application.Run(appContext)
          End Sub
       
           Public Sub ShowForm(ByVal form As Form)
      
              Dim formShow As FormShowDelegate
      
              ' Start the main form first. Otherwise, focus will stay on the 
              ' calling form.
              appContext.MainForm.Activate()
      
              ' Create a new instance of the FormShowDelegate method, and
              ' then invoke the delegate off the MainForm object.
              formShow = New FormShowDelegate(AddressOf ShowFormOnMainForm_MessageLoop)
              appContext.MainForm.Invoke(formShow, New Object() {form})
          End Sub
      
          Private Sub ShowFormOnMainForm_MessageLoop(ByVal form As Form)
              form.Show()
          End Sub
       
          Private Sub ac_ThreadExit(ByVal sender As Object, ByVal e As System.EventArgs) Handles appContext.ThreadExit
              appContext.MainForm.Dispose()
              appContext.MainForm = Nothing
              appContext.Dispose()
              appContext = Nothing
              RaiseEvent MessageLoopExit()
          End Sub
        End Class
      End Class
    12. Proje menüsünde Add Windows Form'u tıklatın ve sonra ' ı tıklatın.
    13. Forma, bazı TextBox denetimleri ve komut düğmesi ekleyin.
    14. Aşağıdaki kodu tıklatın olay işleyicisine komut düğmesini.
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
         MessageBox.Show("Clicked button")
      End Sub
      
      ekleyin...
    15. Çözüm oluşturun. Bu adım, bu bilgisayarda COM birlikte çalışma için projeyi de kaydeder.
  3. Yürütülebilir bir dosya oluşturun. Bunu yapmak için şu adımları izleyin:
    1. Microsoft Visual Basic 6. 0'ı başlatın.
    2. Yeni bir Standart EXE projesi oluşturun.
    3. Proje menüsünde Başvurular ' ı tıklatın.
    4. Visual Basic .NET çözüm kurulu olduğunda, oluşturulan COMWinform türündeki kitaplığa bir başvuru ekleyin. Bu listede yoksa, tür kitaplığı (.tlb) dosyayı kendiniz bulmak için Gözat ' ı tıklatın.
    5. Bir komut düğmesi, forma ekleyin.
    6. Görünüm menüsünde kodu ' ı tıklatın ve aşağıdaki kodu form modülü. ekleyin
      Option Explicit
      
      Private Sub Command1_Click()
          Dim frm As COMWinform.COMForm
          Set frm = New COMWinform.COMForm
          frm.ShowForm1
      End Sub
      
    7. Dosya menüsünden projeyi derlemek için EXE yap ' ı tıklatın.
  4. Derlenmiş Visual Basic 6.0 yürütülebilir dosyasını çalıştırın.
  5. Düğmeyi tıklatın. Sınıf Kitaplıktan daha önce oluşturduğunuz <a2>Windows</a2> formu belirir.
  6. Bir Windows formundaki <a1>TextBox</a1> denetimlerin odağı ayarlayın ve denetimler arasında taşımak için SEKME tuşuna basın.
Denetimler arasında taşımak için SEKME tuşuna başarıyla çalıştığı bildirimi. Ayrıca, ENTER tuşuna bastığınızda komut düğmesinin tıklatın olay harekete dikkat edin.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Bir iç programı döngüsündeki gibi bir iş parçacığının ileti sırasından iletileri alan döngü uygulama iletisi, bunları çevirir ve daha sonra işlenmek üzere uygulamaya gönderir. Windows bir form için ileti döngüsü önceki uygulamaları, Visual Basic 6.0 uygulamalarını ve MFC uygulamaları, ileti döngüleri gibi aynı mimarisine sahip değil. Windows formu umuyor çok ileti döngüsü için deftere nakledilen pencere iletilerinin farklı şekilde işlenebilir. Bu nedenle, beklenmeyen bir davranış ortaya çıkabilir. Bazı tuş vuruşu bileşimlerini çalışmayabilir, bazı fare aktivite çalışmayabilir veya bazı olayları beklendiği gibi ateşlenmesine değil.

Not Yalnızca desteklenen mimarisi görüntüleme ve bir Windows formu kullanarak BIR .NET Framework ileti döngüsü var. "Çözüm" bölümünde açıklanan çözüm, yalnızca bir Windows formu görüntülemek için geçerlidir. COM çağrılabilir sarmalayıcı (saatin tersi YÖNDE) boyunca bir .NET Framework denetimini barındıran için desteklenen tek kapsayıcısı, Microsoft ınternet Explorer ' dir. Bu denetim, Denetim bir kapsayıcıda olması gerektiğinden, kapsayıcıyı sağlayan bir ileti döngüsü kullanmanız gerekir. Bu nedenle, .NET Framework denetim için "Çözüm" bölümünde açıklanan çözüm kullanamazsınız.

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
311334  (http://support.microsoft.com/kb/311334/ ) .NET denetimlerini destekleyen bir ActiveX denetimi kapsayıcılar
317346  (http://support.microsoft.com/kb/317346/ ) Internet Explorer'da yerel COM çağrılabilir .NET karşı denetler

Davranışı Yeniden Oluşturma Adımları

  1. Microsoft Visual Studio .NET 2003 başlatın.
  2. Bir sınıf kitaplığı oluşturun. Bunu yapmak için şu adımları izleyin:
    1. Visual Basic .NET 2003 COMWinform adlı yeni bir sınıf kitaplığı proje oluşturmak için kullanın.
    2. Varsayılan Class1.vb dosyasını silin.
    3. Proje) menüsünde Add Class ' ı tıklatın.
    4. COM sınıf şablonu seçin.
    5. Adı kutusuna, COMForm.vb yazın ve sonra da ' ı tıklatın.
    6. Üst sınıf tanımını.
      Imports System.Windows.Forms
      Imports System.Runtime.InteropServices
      önce COMForm.vb dosyanın aşağıdaki kodu ifadeleri yapıştırın.
    7. Sınıf tanımı içinde COMForm RESULTCLASS oluşturduğunuz zaman, eklenen kodu altında aşağıdaki kodu yapıştırın
          Public Sub ShowForm1()
              ' Create an instance of the .NET Windows Form (Form1),
              ' and then display it
      
              Dim frm As Form1
              frm = New Form1
              frm.Show
          End Sub
      End Class
    8. Proje menüsünde Add Windows Form'u tıklatın ve sonra ' ı tıklatın.
    9. Forma, bazı TextBox denetimleri ve komut düğmesi ekleyin.
    10. Aşağıdaki kodu tıklatın olay işleyicisine komut düğmesini.
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
         MessageBox.Show("Clicked button")
      End Sub
      
      ekleyin...
    11. Çözüm oluşturun. Bu adım, bu bilgisayarda COM birlikte çalışma için projeyi de kaydeder.
  3. Yürütülebilir bir dosya oluşturun. Bunu yapmak için şu adımları izleyin:
    1. Microsoft Visual Basic 6. 0'ı başlatın.
    2. Yeni bir standart exe DOSYASı) projesi oluşturun.
    3. Proje menüsünde Başvurular ' ı tıklatın.
    4. Visual Basic .NET çözüm kurulu olduğunda, oluşturulan COMWinform türündeki kitaplığa bir başvuru ekleyin. Bu listede yoksa, tür kitaplığı (.tlb) dosyayı kendiniz bulmak için Gözat ' ı tıklatın.
    5. Bir komut düğmesi, forma ekleyin.
    6. Görünüm menüsünde kodu ' ı tıklatın ve aşağıdaki kodu form modülü. ekleyin
      Option Explicit
      
      Private Sub Command1_Click()
          Dim frm As COMWinform.COMForm
          Set frm = New COMWinform.COMForm
          frm.ShowForm1
      End Sub
      
    7. Dosya menüsünden projeyi derlemek için EXE yap ' ı tıklatın.
  4. Derlenmiş Visual Basic 6.0 yürütülebilir dosyasını çalıştırın.
  5. Düğmeyi tıklatın. Sınıf Kitaplıktan daha önce oluşturduğunuz <a2>Windows</a2> formu belirir.
  6. Bir Windows formundaki <a1>TextBox</a1> denetimlerin odağı ayarlayın ve denetimler arasında taşımak için SEKME tuşuna basın. SEKME tuşuna odağın denetimler arasında beklendiği gibi taşınmaz, dikkat edin.
  7. Windows formdaki komut düğmesinde odağı ayarlayın ve sonra ENTER tuşuna basın. Düğme yanıt vermemesi ve değil tıklatın olayı harekete dikkat edin.

Referanslar

Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
316422  (http://support.microsoft.com/kb/316422/ ) Visual Basic. NET'te iş parçacığı için yol haritası
315577  (http://support.microsoft.com/kb/315577/ ) Visual Basic. NET'te iş parçacığı oluşturma hakkında

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Foundation Class Library 4.2
Anahtar Kelimeler: 
kbmt kbprb kbwindowsforms kbinfo KB839076 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:839076  (http://support.microsoft.com/kb/839076/en-us/ )