Düzeltme:, Bir MDI alt formunu aşağı kaydırma okunu tıklatarak kaydırma olamaz

Ö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:839577
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Belirtiler
Çoklu Belge arabirim (MDI) alt form üzerinde bir kullanıcı denetimi varsa, aşağı doğru gitmeniz edemiyor. Bu sorun, kullanıcı denetimi odak içerdiğinde oluşur. Alt kaydırma çubuğunda aşağı kaydırma okunu kullanarak aşağı kaydırmak deneyin, ancak aşağı kaydırdığınız edemiyor.
Neden
Bir kullanıcı denetimi odak içerdiğinde, kullanıcı denetimi etkin bir denetimidir. Kullanıcı denetimi odak içerdiğinde, ancak, Microsoft .NET Framework 1.1 varsa ActiveControl.Focused özelliği false true döndürmek yerine döndürür. Bu nedenle, kullanıcı denetimi odaklanan form, kullanıcı denetimi görünür hale getirmek için zorlar. Aşağı kaydırma okunu tıklatarak bir aşağı kaydırma işlemi gerçekleştirdiğinizde, bu sorun oluşur.
Çözüm
Bu sorunu gidermek için <a0></a0>, Microsoft .NET Framework 1.1 için en son hizmet paketini edinin. Aşağıdaki dosya Microsoft Yükleme Merkezi'nden yüklenebilir:

Microsoft .NET Framework 1.1 Service Pack 1
Durum
Microsoft, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bu sorunun olduğunu onaylamıştır. Bu sorun, ilk olarak Microsoft .NET ile düzeltilmiştir Framework 1.1 Service Pack 1 '.
Daha fazla bilgi

Sorunu Yeniden Oluşturma Adımları

  1. Bir <a0>kullanıcı</a0> Denetim dosyası oluşturun. Bunu yapmak için şu adımları izleyin:
    1. Microsoft Visual Studio .NET'i başlatın.
    2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.

      <a0>New Project</a0> iletişim kutusu görüntülenir.
    3. Project Types altında Visual Basic Projeleri) tıklatın.
    4. Şablonları altında tıklatın Windows Denetim Kitaplığı.
    5. Adı kutusuna, testusercontrol yazın ve Tamam ' ı tıklatın.

      Varsayılan olarak, Usercontrol1.vb adlı bir dosya olarak görünür.
    6. Bir TextBox denetimi için Usercontrol1.vb ekleme [Tasarım] dosya.
    7. Yapı) menüsünde tıklatın Build Solution.
  2. Bir Windows uygulaması projeye ekleyin. Bunu yapmak için şu adımları izleyin:
    1. Dosya menüsünde işaret Ekle Project ve sonra da New Project ' i tıklatın.

      <a0>New Project</a0> iletişim kutusu görüntülenir.
    2. Project Types altında Visual Basic Projects ' ı tıklatın.
    3. Şablonları altında tıklatın Windows uygulama.
    4. Adı kutusuna, user_control_scroll_UI yazın ve Tamam ' ı tıklatın.

      Varsayılan olarak, Form1 adlı formu görüntülenir.
    5. Solution Explorer'da (Çözüm Gezgini), user_control_scroll_UI sağ tıklatın ve sonra Add Reference</a1>'ı tıklatın.

      <a0>Başvuru Ekle</a0> iletişim kutusu görüntülenir.
    6. Projeler sekmesini Seç ' i tıklatın ve proje başvuru için testusercontrol eklemek için Tamam ' ı tıklatın.
    7. Form1 adlı formu sağ tıklatın ve sonra View Code.
    8. Varolan kodu aşağıdaki kodla değiştirin:
      Option Strict OnOption Explicit On Public Class MDIChild    Inherits System.Windows.Forms.Form#Region " Windows Forms Designer generated code "    Public Sub New()        MyBase.New()        'This call is required by the Windows Forms Designer.        InitializeComponent()        'Add any initialization after the InitializeComponent() call.    End Sub    'The Form overrides dispose to clean up the component list.    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)        If disposing Then            If Not (components Is Nothing) Then                components.Dispose()            End If        End If        MyBase.Dispose(disposing)    End Sub    'This is required by the Windows Forms Designer.    Private components As System.ComponentModel.IContainer    'Note The following procedure is required by the Windows Forms Designer.    'The following procedure can be modified by using the Windows Forms Designer.      'Do not modify the following procedure by using the code editor.    Friend WithEvents UserControl11 As testusercontrol.UserControl1    Friend WithEvents TextBox1 As System.Windows.Forms.TextBox    Friend WithEvents TextBox2 As System.Windows.Forms.TextBox    Friend WithEvents TextBox3 As System.Windows.Forms.TextBox    Friend WithEvents TextBox4 As System.Windows.Forms.TextBox    Friend WithEvents TextBox5 As System.Windows.Forms.TextBox    Friend WithEvents TextBox6 As System.Windows.Forms.TextBox    Friend WithEvents UserControl12 As testusercontrol.UserControl1    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()        Me.UserControl11 = New testusercontrol.UserControl1        Me.TextBox1 = New System.Windows.Forms.TextBox        Me.TextBox2 = New System.Windows.Forms.TextBox        Me.TextBox3 = New System.Windows.Forms.TextBox        Me.TextBox4 = New System.Windows.Forms.TextBox        Me.TextBox5 = New System.Windows.Forms.TextBox        Me.TextBox6 = New System.Windows.Forms.TextBox        Me.UserControl12 = New testusercontrol.UserControl1        Me.SuspendLayout()        '        'UserControl11        '        Me.UserControl11.Location = New System.Drawing.Point(26, 30)        Me.UserControl11.Name = "UserControl11"        Me.UserControl11.Size = New System.Drawing.Size(104, 24)        Me.UserControl11.TabIndex = 0        '        'TextBox1        '        Me.TextBox1.Location = New System.Drawing.Point(26, 161)        Me.TextBox1.Name = "TextBox1"        Me.TextBox1.TabIndex = 1        Me.TextBox1.Text = "TextBox1"        '        'TextBox2        '        Me.TextBox2.Location = New System.Drawing.Point(26, 384)        Me.TextBox2.Name = "TextBox2"        Me.TextBox2.Size = New System.Drawing.Size(103, 20)        Me.TextBox2.TabIndex = 2        Me.TextBox2.Text = "TextBox2"        '        'TextBox3        '        Me.TextBox3.Location = New System.Drawing.Point(26, 541)        Me.TextBox3.Name = "TextBox3"        Me.TextBox3.TabIndex = 3        Me.TextBox3.Text = "TextBox3"        '        'TextBox4        '        Me.TextBox4.Location = New System.Drawing.Point(26, 725)        Me.TextBox4.Name = "TextBox4"        Me.TextBox4.TabIndex = 4        Me.TextBox4.Text = "TextBox4"        '        'TextBox5        '        Me.TextBox5.Location = New System.Drawing.Point(26, 929)        Me.TextBox5.Name = "TextBox5"        Me.TextBox5.TabIndex = 5        Me.TextBox5.Text = "TextBox5"        '        'TextBox6        '        Me.TextBox6.Location = New System.Drawing.Point(26, 1394)        Me.TextBox6.Name = "TextBox6"        Me.TextBox6.TabIndex = 7        Me.TextBox6.Text = "TextBox6"        '        'UserControl12        '        Me.UserControl12.Location = New System.Drawing.Point(26, 1142)        Me.UserControl12.Name = "UserControl12"        Me.UserControl12.Size = New System.Drawing.Size(103, 27)        Me.UserControl12.TabIndex = 6        '        'MDIChild        '        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)        Me.AutoScroll = True        Me.ClientSize = New System.Drawing.Size(275, 266)        Me.Controls.Add(Me.UserControl12)        Me.Controls.Add(Me.TextBox6)        Me.Controls.Add(Me.TextBox5)        Me.Controls.Add(Me.TextBox4)        Me.Controls.Add(Me.TextBox3)        Me.Controls.Add(Me.TextBox2)        Me.Controls.Add(Me.TextBox1)        Me.Controls.Add(Me.UserControl11)        Me.Name = "MDIChild"        Me.Text = "MDIChild"        Me.ResumeLayout(False)    End Sub#End RegionEnd Class
    9. Solution Explorer'da (Çözüm Gezgini), user_control_scroll_UI sağ tıklatın, sonra da Ekle işaret ve sonra Yeni Öğe Ekle'yi tıklatın.

      <a0>Add New ıtem - user_control_scroll_UI</a0> iletişim kutusu görüntülenir.
    10. Adı kutusuna, mdi.vb yazın ve sonra da ' ı tıklatın.

      Mdi.vb adlı bir dosya olarak görünür.
    11. Solution Explorer'da (Çözüm Gezgini), mdi.vb adlı formu sağ tıklatın ve Kod Görüntüle</a1>'ı tıklatın.
    12. Varolan kodu aşağıdaki kodla değiştirin:
      Option Strict OnOption Explicit On Public Class MDI    Inherits System.Windows.Forms.Form#Region " Windows Forms Designer generated code "    Public Sub New()        MyBase.New()        'This call is required by the Windows Forms Designer.        InitializeComponent()        'Add any initialization after the InitializeComponent() call.    End Sub    'The Form overrides dispose to clean up the component list.    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)        If disposing Then            If Not (components Is Nothing) Then                components.Dispose()            End If        End If        MyBase.Dispose(disposing)    End Sub    'This is required by the Windows Forms Designer.    Private components As System.ComponentModel.IContainer    'Note The following procedure is required by the Windows Forms Designer    'The following procedure can be modified by using the Windows Forms Designer.      'Do not modify the following procedure by using the code editor.    Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu    Friend WithEvents mnuAutoScroll As System.Windows.Forms.MenuItem    Friend WithEvents mnuVScroll As System.Windows.Forms.MenuItem    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()        Me.MainMenu1 = New System.Windows.Forms.MainMenu        Me.mnuAutoScroll = New System.Windows.Forms.MenuItem        Me.mnuVScroll = New System.Windows.Forms.MenuItem        '        'MainMenu1        '        Me.MainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuAutoScroll, Me.mnuVScroll})        '        'mnuAutoScroll        '        Me.mnuAutoScroll.Index = 0        Me.mnuAutoScroll.Text = "Load AutoScroll Child"        '        'mnuVScroll        '        Me.mnuVScroll.Index = 1        Me.mnuVScroll.Text = "Load VScroll Child"        '        'MDI        '        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)        Me.ClientSize = New System.Drawing.Size(366, 299)        Me.IsMdiContainer = True        Me.Menu = Me.MainMenu1        Me.Name = "MDI"        Me.Text = "MDI"    End Sub#End Region    Private Sub MDI_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load    End Sub    Private Sub mnuAutoScroll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuAutoScroll.Click        Dim currentForm As New MDIChild        currentForm.MdiParent = Me        currentForm.WindowState = FormWindowState.Maximized        currentForm.Show()        currentForm.BringToFront()    End Sub    Private Sub mnuVScroll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuVScroll.Click        Dim currentForm As New VScrollChild        currentForm.MdiParent = Me        currentForm.WindowState = FormWindowState.Maximized        currentForm.Show()        currentForm.BringToFront()    End SubEnd Class
    13. Solution Explorer'da (Çözüm Gezgini), user_control_scroll_UI sağ tıklatın, sonra da Ekle işaret ve sonra Yeni Öğe Ekle'yi tıklatın.

      <a0>Add New ıtem - user_control_scroll_UI</a0> iletişim kutusu görüntülenir.
    14. Adı kutusuna, Vscroll.vb yazın ve sonra da ' ı tıklatın.

      Vscroll.vb adlı bir dosya olarak görünür.
    15. Solution Explorer'da (Çözüm Gezgini), Vscroll.vb adlı formu sağ tıklatın ve Kod Görüntüle</a1>'ı tıklatın.
    16. Varolan kodu aşağıdaki kodla değiştirin:
      ption Strict OnOption Explicit On Public Class VScrollChild    Inherits System.Windows.Forms.Form#Region " Windows Forms Designer generated code "    Public Sub New()        MyBase.New()        'This call is required by the Windows Forms Designer.        InitializeComponent()        'Add any initialization after the InitializeComponent() call.    End Sub    'The form overrides dispose to clean up the component list.    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)        If disposing Then            If Not (components Is Nothing) Then                components.Dispose()            End If        End If        MyBase.Dispose(disposing)    End Sub    'This is required by the Windows Forms Designer.    Private components As System.ComponentModel.IContainer    'Note The following procedure is required by the Windows Forms Designer.    'The following procedure can be modified by using the Windows Forms Designer.      'Do not modify the following procedure by using the code editor.    Friend WithEvents TextBox1 As System.Windows.Forms.TextBox    Friend WithEvents TextBox2 As System.Windows.Forms.TextBox    Friend WithEvents TextBox3 As System.Windows.Forms.TextBox    Friend WithEvents TextBox4 As System.Windows.Forms.TextBox    Friend WithEvents TextBox5 As System.Windows.Forms.TextBox    Friend WithEvents TextBox6 As System.Windows.Forms.TextBox    Friend WithEvents testUcNum1 As testusercontrol.UserControl1    Friend WithEvents VScrollBar1 As System.Windows.Forms.VScrollBar    Friend WithEvents testUcNum2 As testusercontrol.UserControl1    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()        Me.testUcNum1 = New testusercontrol.UserControl1        Me.TextBox1 = New System.Windows.Forms.TextBox        Me.TextBox2 = New System.Windows.Forms.TextBox        Me.TextBox3 = New System.Windows.Forms.TextBox        Me.TextBox4 = New System.Windows.Forms.TextBox        Me.TextBox5 = New System.Windows.Forms.TextBox        Me.TextBox6 = New System.Windows.Forms.TextBox        Me.VScrollBar1 = New System.Windows.Forms.VScrollBar        Me.testUcNum2 = New testusercontrol.UserControl1        Me.SuspendLayout()        '        'testUcNum1        '        Me.testUcNum1.Location = New System.Drawing.Point(26, 30)        Me.testUcNum1.Name = "testUcNum1"        Me.testUcNum1.Size = New System.Drawing.Size(104, 24)        Me.testUcNum1.TabIndex = 0        '        'TextBox1        '        Me.TextBox1.Location = New System.Drawing.Point(26, 161)        Me.TextBox1.Name = "TextBox1"        Me.TextBox1.TabIndex = 1        Me.TextBox1.Text = "TextBox1"        '        'TextBox2        '        Me.TextBox2.Location = New System.Drawing.Point(26, 384)        Me.TextBox2.Name = "TextBox2"        Me.TextBox2.Size = New System.Drawing.Size(103, 20)        Me.TextBox2.TabIndex = 2        Me.TextBox2.Text = "TextBox2"        '        'TextBox3        '        Me.TextBox3.Location = New System.Drawing.Point(26, 541)        Me.TextBox3.Name = "TextBox3"        Me.TextBox3.TabIndex = 3        Me.TextBox3.Text = "TextBox3"        '        'TextBox4        '        Me.TextBox4.Location = New System.Drawing.Point(26, 725)        Me.TextBox4.Name = "TextBox4"        Me.TextBox4.TabIndex = 4        Me.TextBox4.Text = "TextBox4"        '        'TextBox5        '        Me.TextBox5.Location = New System.Drawing.Point(26, 929)        Me.TextBox5.Name = "TextBox5"        Me.TextBox5.TabIndex = 5        Me.TextBox5.Text = "TextBox5"        '        'TextBox6        '        Me.TextBox6.Location = New System.Drawing.Point(26, 1394)        Me.TextBox6.Name = "TextBox6"        Me.TextBox6.TabIndex = 7        Me.TextBox6.Text = "TextBox6"        '        'VScrollBar1        '        Me.VScrollBar1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _                    Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)        Me.VScrollBar1.Location = New System.Drawing.Point(224, 0)        Me.VScrollBar1.Name = "VScrollBar1"        Me.VScrollBar1.Size = New System.Drawing.Size(17, 266)        Me.VScrollBar1.TabIndex = 8        '        'testUcNum2        '        Me.testUcNum2.Location = New System.Drawing.Point(27, 639)        Me.testUcNum2.Name = "testUcNum2"        Me.testUcNum2.Size = New System.Drawing.Size(104, 24)        Me.testUcNum2.TabIndex = 9        '        'VScrollChild        '        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)        Me.ClientSize = New System.Drawing.Size(241, 266)        Me.Controls.Add(Me.testUcNum2)        Me.Controls.Add(Me.VScrollBar1)        Me.Controls.Add(Me.TextBox6)        Me.Controls.Add(Me.TextBox5)        Me.Controls.Add(Me.TextBox4)        Me.Controls.Add(Me.TextBox3)        Me.Controls.Add(Me.TextBox2)        Me.Controls.Add(Me.TextBox1)        Me.Controls.Add(Me.testUcNum1)        Me.Name = "VScrollChild"        Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show        Me.Text = "MDIChild"        Me.ResumeLayout(False)    End Sub#End Region    Private htControlTops As New Hashtable    'Note The following assumes that no controls are put above the form the first time. For example, there are no negative .Top values.    '      If this is not the case, a similar "topLine" variable is required to make sure that     '      you know the full length of the useful area of the form.    '                            bottomMostCtl.Top + bottomMostCtl.Height - topMostCtl.Top    '      This calculation is not required on this form.    Private bottomLine As Integer = Integer.MinValue    Private Sub MDIChild_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load        For Each ctl As Control In Me.Controls            If TypeOf ctl Is testusercontrol.UserControl1 _                OrElse TypeOf ctl Is TextBox Then                htControlTops.Add(ctl.Name, ctl.Top)                Debug.WriteLine("MDIChild_Load => Ctl Name: " & ctl.Name & ", Top=" & ctl.Top)                If (ctl.Top + ctl.Height) > bottomLine Then                    bottomLine = ctl.Top + ctl.Height                End If            End If        Next    End Sub    Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll        Debug.WriteLine("*** VScrollBar1_Scroll event fired! (New Value: " & e.NewValue & ")")        ScrollForMe(e.NewValue)    End Sub    Private Sub ScrollForMe(ByVal scrollValue As Integer)        Dim oldTop As Integer        Dim pct As Double = scrollValue / VScrollBar1.Maximum        'Debug.WriteLine(">>> Percentage Scroll: " & Format(pct, "00.0%") & " <<<")        Dim incr As Integer = CInt(pct * bottomLine)        'Debug.WriteLine(">>> Increment value: " & incr & " <<<")        For Each ctl As Control In Me.Controls            If TypeOf ctl Is testusercontrol.UserControl1 _                OrElse TypeOf ctl Is TextBox Then                oldTop = CType(htControlTops(ctl.Name), Integer)                ctl.Top = oldTop - incr                'Debug.WriteLine("VScrollBar1_Scroll => Ctl Name: " & ctl.Name & ", Top=" & ctl.Top)            End If        Next    End SubEnd Class
  3. Çözüm oluşturun ve sonra projeyi çalıştırın. Bunu yapmak için şu adımları izleyin:
    1. Solution Explorer'da Solution 'testusercontrol' (2 projeleri) tıklatın.
    2. Proje menüsünde Özellikler ' i tıklatın.

      Solution 'testusercontrol' özellik sayfaları iletişim kutusu görüntülenir.
    3. Sol bölmede, Startup Project'i altında ortak özellikler ' i çift tıklatın ve user_control_scroll_UI</a1>'ı tıklatın.
    4. Sol bölmede, Ortak özellikler altında Proje bağımlılıklar ' ı çift tıklatın.
    5. Sağdaki bölmede, testusercontrol <a0>Proje</a0> listesinde tıklatın ve sonra Tamam ' ı tıklatın.
    6. Solution Explorer'da (Çözüm Gezgini), user_control_scroll_UI ' ı sağ tıklatın ve sonra da Properties ' i tıklatın.

      User_control_scroll_UI özellik sayfaları iletişim kutusu görüntülenir.
    7. Sol bölmede, Genelortak özellikler altında çift tıklatın.
    8. Sağ bölmede, MDIBaşlangıç nesnesi</a1> kutusunda tıklatın.
    9. Yapı) menüsünde tıklatın Build Solution.
    10. Programı çalıştırmak için F5 tuşuna basın.

      MDI formu görüntülenir.
    11. Form üzerinde taşımak için aşağı kaydırma okunu tıklatın, Yük AutoScroll alt ' ı tıklatın.

      "Belirtiler" bölümünde açıklanan davranışla, dikkat edin.
Referanslar
MDI alt formları oluşturma hakkında ek bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
824684Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 839577 - Son İnceleme: 01/17/2015 08:49:52 - Düzeltme: 2.2

Microsoft .NET Framework 1.1

  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbmdi kbnetframe110sp1fix kbscrollbar kbcontrol kbforms kbbug kbfix kbnetframe110presp1fix KB839577 KbMttr
Geri bildirim