Oprava: Při nelze posunout dolů podřízený formulář MDI klepnutím na šipku posuvníku dolů

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

839577
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Příznaky
Při uživatelský ovládací prvek nachází na podřízený formulář MDI (více Document Interface), nelze posunout dolů. K tomuto problému dochází, obsahuje uživatelský ovládací prvek fokus. Se pokuste posunout dolů pomocí šipky dolů posuvníku na posuvníku podřízený formulář, ale nelze posunout dolů.
Příčina
Uživatelský ovládací prvek obsahuje fokus, uživatelský ovládací prvek je aktivní ovládací prvek. Však obsahuje uživatelský ovládací prvek fokus, ActiveControl.Focused vlastnost, která je k dispozici v rozhraní Microsoft .NET Framework 1.1 vrátí FALSE namísto vracení TRUE. Proto vynutí zaměřením uživatelský ovládací prvek formuláře zviditelnit uživatelský ovládací prvek. K tomuto problému dochází při provedení operace posuvníku dolů klepnutím na šipku dolů posuvníku.
Řešení
Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro rozhraní Microsoft .NET Framework 1.1. Na webu služby Stažení softwaru je k dispozici ke stažení následující soubor:

Microsoft .NET Framework 1.1 Service Pack 1
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt. Tento problém byl poprvé opraven aktualizací Microsoft .NET Framework 1.1 Service Pack 1.
Další informace

Postup reprodukce problému

  1. Vytvoření uživatelského souboru ovládacího prvku. Postupujte takto:
    1. Spusťte aplikaci Visual Studio .NET.
    2. V nabídce soubor přejděte na příkaz Nový a klepněte na příkaz projekt.

      Zobrazí se dialogové okno Nový projekt.
    3. V části Typy Project klepněte Projekty jazyka.
    4. V části šablony na Windows Control Library.
    5. V poli název zadejte testusercontrol a potom klepněte na tlačítko OK.

      Ve výchozím nastavení se zobrazí soubor s názvem Usercontrol1.vb.
    6. Přidat ovládací prvek TextBox Usercontrol1.vb [návrh] souboru.
    7. V nabídce vytvořit klepněte na příkaz Sestavit řešení.
  2. Aplikace systému Windows do projektu přidat. Postupujte takto:
    1. V nabídce soubor přejděte na příkaz Přidat Project a klepněte na tlačítko Nový projekt.

      Zobrazí se dialogové okno Nový projekt.
    2. V části Typy Project klepněte Projekty Visual Basic.
    3. V části šablony na Windows Application.
    4. V poli název zadejte user_control_scroll_UI a potom klepněte na tlačítko OK.

      Ve výchozím nastavení zobrazí se formulář s názvem Form1.
    5. V aplikaci Solution Explorer klepněte pravým tlačítkem myši user_control_scroll_UI a potom klepněte na tlačítko Přidat odkaz.

      Zobrazí se dialogové okno Přidat odkaz.
    6. Klepněte na kartu projekty, klepněte na tlačítko Vybrat a klepněte na tlačítko OK přidat do projektu odkaz testusercontrol.
    7. Klepněte pravým tlačítkem myši na formulář s názvem Form1 a potom klepněte na tlačítko Zobrazit kód.
    8. Nahradit existující kód následující kód:
      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. V aplikaci Solution Explorer klepněte pravým tlačítkem myši user_control_scroll_UI, přejděte na příkaz Přidat a potom klepněte na možnost Přidat novou položku.

      Zobrazí se v dialogovém okně Přidat novou položku - user_control_scroll_UI.
    10. V poli název zadejte mdi.vb a potom klepněte na tlačítko Otevřít.

      Zobrazí se soubor s názvem mdi.vb.
    11. V aplikaci Solution Explorer klepněte pravým tlačítkem myši na formulář s názvem mdi.vb a potom klepněte na tlačítko Zobrazit kód.
    12. Nahradit existující kód následující kód:
      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. V aplikaci Solution Explorer klepněte pravým tlačítkem myši user_control_scroll_UI, přejděte na příkaz Přidat a potom klepněte na možnost Přidat novou položku.

      Zobrazí se v dialogovém okně Přidat novou položku - user_control_scroll_UI.
    14. V poli název zadejte Vscroll.vb a potom klepněte na tlačítko Otevřít.

      Zobrazí se soubor s názvem Vscroll.vb.
    15. V aplikaci Solution Explorer klepněte pravým tlačítkem myši na formulář s názvem Vscroll.vb a potom klepněte na tlačítko Zobrazit kód.
    16. Nahradit existující kód následující kód:
      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. Řešení sestavit a spustit projektu. Postupujte takto:
    1. V aplikaci Solution Explorer klepněte na tlačítko řešení testusercontrol (2 projekty).
    2. V nabídce projekt klepněte na tlačítko Vlastnosti.

      Řešení testusercontrol vlastností stránky se zobrazí dialogové okno.
    3. V levém podokně poklepejte na Spouštěcí Project části společné vlastnosti a potom klepněte na tlačítko user_control_scroll_UI.
    4. V levém podokně poklepejte na Project závislosti části Společné vlastnosti.
    5. V pravém podokně klepněte v seznamu projekttestusercontrol a potom klepněte na tlačítko OK.
    6. V aplikaci Solution Explorer klepněte pravým tlačítkem myši user_control_scroll_UI a potom klepněte na příkaz Vlastnosti.

      User_control_scroll_UI vlastností stránky se zobrazí dialogové okno.
    7. V levém podokně poklepejte na Obecné části společné vlastnosti.
    8. V pravém podokně klepněte v poli spouštěcí objektMDI.
    9. V nabídce vytvořit klepněte na příkaz Sestavit řešení.
    10. Stisknutím klávesy F5 spustit program.

      MDI se zobrazí formulář.
    11. Klepněte na tlačítko Zatížení AutoScroll podřízené, klepněte na šipku dolů posuvníku se pokuste přesunout pomocí formuláře.

      Všimněte si chování uvedena v "příznaky".
Odkazy
Další informace o vytváření podřízené formuláře MDI na webu Microsoft Developer Network (MSDN):Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Upozornění: Tento článek byl přeložen automaticky

Vlastnosti

ID článku: 839577 - Poslední kontrola: 01/17/2015 08:49:29 - Revize: 2.2

  • Microsoft .NET Framework 1.1
  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbmdi kbnetframe110sp1fix kbscrollbar kbcontrol kbforms kbbug kbfix kbnetframe110presp1fix KB839577 KbMtcs
Váš názor