أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

FIX: لا يمكن التمرير لأسفل نموذج تابعة لـ MDI بالنقر فوق سهم التمرير للأسفل

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية839577
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
عند وجود عنصر تحكم مستخدم في نموذج تابعة واجهة مستندات متعددة (MDI) ، لا يمكن التمرير إلى أسفل. تحدث هذه المشكلة عندما يحتوي عنصر تحكم المستخدم على التركيز. محاولة التمرير لأسفل باستخدام السهم لأسفل التمرير على شريط التمرير في النموذج التابعة ولكن لا يمكن التمرير لأسفل.
السبب
عندما يحتوي عنصر تحكم مستخدم على التركيز ، عنصر تحكم المستخدم عنصر تحكم نشط. ومع ذلك، عندما يحتوي عنصر تحكم المستخدم على التركيز ، الخاصية ActiveControl.Focused الموجودة في Microsoft .NET Framework 1.1 بإرجاع خطأ بدلاً من إرجاع True. لذلك، التركيز عنصر تحكم المستخدم يفرض النموذج لإظهار عنصر تحكم المستخدم. تحدث هذه المشكلة عند إجراء عملية التمرير لأسفل بالنقر فوق سهم التمرير للأسفل.
الحل
لحل هذه المشكلة، يجب الحصول على أحدث حزمة خدمة لبرنامج Microsoft .NET Framework 1.1. يتوفر الملف التالي للتنزيل من "مركز التنزيل لـ Microsoft":

Microsoft .NET Framework 1.1 Service Pack 1
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "تنطبق على". تم تصحيح هذه المشكلة لأول مرة في Microsoft .NET Framework 1.1 المزود بحزمة الخدمة Service Pack 1.
معلومات أخرى

خطوات إعادة إنشاء المشكلة

  1. إنشاء ملف عنصر تحكم مستخدم. للقيام بذلك، اتبع الخطوات التالية:
    1. بدء تشغيل Microsoft Visual Studio .NET.
    2. من القائمة ملف، أشر إلى جديد ثم انقر فوق المشروع.

      يظهر مربع الحوار مشروع جديد.
    3. ضمن أنواع Project ، انقر فوق مشاريع Visual Basic.
    4. ضمن قوالب ، انقر فوق Windows "مكتبة التحكم".
    5. في المربع الاسم، اكتب testusercontrol ومن ثم انقر فوق موافق.

      افتراضياً، يظهر ملف يسمى Usercontrol1.vb.
    6. إضافة عنصر تحكم مربع نص إلى Usercontrol1.vb ملف [تصميم].
    7. في القائمة إنشاء ، انقر فوق بنية الحل.
  2. إضافة تطبيق Windows إلى المشروع. للقيام بذلك، اتبع الخطوات التالية:
    1. من القائمة ملف، أشر إلى إضافة Project ، ثم انقر فوق مشروع جديد.

      يظهر مربع الحوار مشروع جديد.
    2. ضمن أنواع Project ، انقر فوق مشاريع Visual Basic.
    3. ضمن قوالب ، انقر فوق Windows تطبيق.
    4. في المربع الاسم، اكتب user_control_scroll_UI ومن ثم انقر فوق موافق.

      افتراضياً، يظهر نموذج يسمى Form1.
    5. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق user_control_scroll_UI ومن ثم انقر فوق إضافة مرجع.

      يظهر مربع الحوار إضافة المرجع.
    6. انقر فوق علامة التبويب مشاريع ، انقر فوق تحديد ثم انقر فوق موافق لإضافة testusercontrol إلى مرجع المشروع.
    7. انقر بزر الماوس الأيمن فوق النموذج الذي يسمى Form1 ثم انقر فوق عرض رمز.
    8. استبدال التعليمات البرمجية الموجودة في التعليمات البرمجية التالية:
      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. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق user_control_scroll_UI وأشر إلى إضافة ثم انقر فوق إضافة عنصر جديد.

      يظهر مربع الحوار إضافة عنصر جديد - user_control_scroll_UI.
    10. في المربع الاسم، اكتب Mdi.vb ومن ثم انقر فوق فتح.

      يظهر الملف المسمى Mdi.vb.
    11. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق النموذج الذي يسمى Mdi.vb ومن ثم انقر فوق عرض التعليمات البرمجية.
    12. استبدال التعليمات البرمجية الموجودة في التعليمات البرمجية التالية:
      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. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق user_control_scroll_UI وأشر إلى إضافة ثم انقر فوق إضافة عنصر جديد.

      يظهر مربع الحوار إضافة عنصر جديد - user_control_scroll_UI.
    14. في المربع الاسم، اكتب Vscroll.vb ومن ثم انقر فوق فتح.

      يظهر الملف المسمى Vscroll.vb.
    15. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق النموذج الذي يسمى Vscroll.vb ومن ثم انقر فوق عرض التعليمات البرمجية.
    16. استبدال التعليمات البرمجية الموجودة في التعليمات البرمجية التالية: ption
      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. بناء الحل ثم قم بتشغيل المشروع. للقيام بذلك، اتبع الخطوات التالية:
    1. في "مستكشف" الحل "، انقر فوق الحل 'testusercontrol' (المشاريع 2).
    2. من القائمة المشروع انقر فوق خصائص.

      الحل 'testusercontrol' خاصية صفحات يظهر مربع الحوار.
    3. في الجزء الأيمن، انقر نقراً مزدوجاً فوق بدء المشروع ضمن خصائص العامة ثم انقر فوق user_control_scroll_UI.
    4. في الجزء الأيمن، انقر نقراً مزدوجاً فوق التبعيات Project ضمن خصائص العامة.
    5. في الجزء الأيسر، انقر فوق testusercontrol في القائمة المشروع ثم انقر فوق موافق.
    6. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق user_control_scroll_UI ومن ثم انقر فوق خصائص.

      user_control_scroll_UI خاصية صفحات يظهر مربع الحوار.
    7. في الجزء الأيمن، انقر نقراً مزدوجاً فوق عام ضمن خصائص العامة.
    8. في الجزء الأيسر، انقر فوق MDI في مربع كائن بدء التشغيل.
    9. في القائمة إنشاء ، انقر فوق بنية الحل.
    10. اضغط F5 لتشغيل البرنامج.

      MDI يظهر نموذج.
    11. انقر فوق تحميل AutoScroll التابعة ، انقر فوق سهم التمرير لأسفل محاولة نقل النموذج.

      لاحظ السلوك المذكور في قسم "الأعراض".
مراجع
للحصول على معلومات إضافية حول إنشاء نماذج تابعة لـ MDI قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
824684وصف للمصطلحات القياسية المستخدمة في وصف تحديثات برامج Microsoft

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 839577 - آخر مراجعة: 01/17/2015 08:49:27 - المراجعة: 2.2

Microsoft .NET Framework 1.1

  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbmdi kbnetframe110sp1fix kbscrollbar kbcontrol kbforms kbbug kbfix kbnetframe110presp1fix KB839577 KbMtar
تعليقات