none
Problem mit AutoScroll in einer TabControl RRS feed

  • Frage

  • Hallo,

    Folgendes Problem: ich möchte über diesen Code Bilde in TabPages einer Tabcontrol laden. Wenn aber das Image und die PictureBox größer als der TabPage-Container ist, sollen die horizontalen und oder vertikalen ScrollBars erscheinen und die PictureBox den Anchor Links und Oben bekommen. Allerdings funktioniert der Code in dieser Situation nicht richtig: es erscheinen keine Scrollbars und sobald ich die Größe der Tabcontrol ändere ist die PictureBox nicht mehr links oben.

    Was mache ich falsch, wie gehts richtig?

    Hier der Code:

    Dim Bildöffner As New OpenFileDialog
    Dim neuesdokument As TabPage = New TabPage("name")
    Dim neuesbild As New PictureBox
    If Bildöffner.ShowDialog = Windows.Forms.DialogResult.OK Then
        neuesbild.Image = New Bitmap(Bildöffner.FileName)
    End If
    TabControl1.TabPages.Add(neuesdokument)
    neuesdokument.Text = Bildöffner.FileName
    neuesdokument.Controls.Add(neuesbild)
    TabControl1.SelectedTab = neuesdokument
    neuesbild.Size = neuesbild.Image.Size
    If neuesbild.Size.Height > neuesdokument.Size.Height Or neuesbild.Size.Width > neuesdokument.Size.Width Then
        neuesbild.Location = New System.Drawing.Point(0, 0)
        neuesbild.Anchor = AnchorStyles.Left And AnchorStyles.Top
        neuesdokument.AutoScroll = True
    Else
        neuesbild.Location = New System.Drawing.Point((neuesdokument.Size.Width - neuesbild.Size.Width) / 2, (neuesdokument.Size.Height - neuesbild.Size.Height) / 2)
        neuesbild.Anchor = AnchorStyles.None
    End If

    Vielen Dank!

    Dienstag, 30. Juli 2013 10:43

Antworten

  • Ich denke mal das die PictureBox selber keine Scrolleisten anzeigt.

    Ich habe das mal nachgestellt und folgendes in das Click-Ereignis eines Buttons auf der TabPage(1) eingefügt.

    	Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    		'//
    		Dim tp As New TabPage
    		Dim pnl As New Panel
    		Dim pb As New PictureBox
    		'//
    		pnl.Dock = DockStyle.Fill
    		pnl.AutoScroll = True
    		'//
    		pb.Location = New Drawing.Point(0,0)
    		pb.BackgroundImageLayout = ImageLayout.None
    		pb.Image = New Drawing.Bitmap("C:\IMG_3603.jpg")
    		pb.Width = pb.Image.Width
    		pb.Height = pb.Image.Height
    		'//
    		pnl.Controls.Add(pb)
    		tp.Controls.Add(pnl)
    		tp.Text = "Test"
    		TabControl1.TabPages.Add(tp)
    	End Sub

    Ich habe also erst ein Panel angelegt welches sich der Größe des Containers anpasst. Dann die Eigenschaft des Panels aus "AutoCroll=True" In der PictureBox habe ich keine Eigenschaft "AutoScroll" gefunden.

    Vielleicht hilft Dir das etwas.

    Gruß Thomas

    Dienstag, 30. Juli 2013 12:54

Alle Antworten

  • Ich denke mal das die PictureBox selber keine Scrolleisten anzeigt.

    Ich habe das mal nachgestellt und folgendes in das Click-Ereignis eines Buttons auf der TabPage(1) eingefügt.

    	Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    		'//
    		Dim tp As New TabPage
    		Dim pnl As New Panel
    		Dim pb As New PictureBox
    		'//
    		pnl.Dock = DockStyle.Fill
    		pnl.AutoScroll = True
    		'//
    		pb.Location = New Drawing.Point(0,0)
    		pb.BackgroundImageLayout = ImageLayout.None
    		pb.Image = New Drawing.Bitmap("C:\IMG_3603.jpg")
    		pb.Width = pb.Image.Width
    		pb.Height = pb.Image.Height
    		'//
    		pnl.Controls.Add(pb)
    		tp.Controls.Add(pnl)
    		tp.Text = "Test"
    		TabControl1.TabPages.Add(tp)
    	End Sub

    Ich habe also erst ein Panel angelegt welches sich der Größe des Containers anpasst. Dann die Eigenschaft des Panels aus "AutoCroll=True" In der PictureBox habe ich keine Eigenschaft "AutoScroll" gefunden.

    Vielleicht hilft Dir das etwas.

    Gruß Thomas

    Dienstag, 30. Juli 2013 12:54
  • Vielen Dank für deine Antwort,

    Hat mir bei der Lösung des Problems sehr geholfen. Ich habe herausgefunden, dass man das Panel gar nicht braucht; mein fehler war nur die Reihenfolge des Code und die Anchor-Eingenschaft ;)

    Dienstag, 30. Juli 2013 14:42