Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
Si utiliza un control Panel, puede establecer su propiedad AutoScroll en true y desplazarse en vertical por su contenido. Sin embargo, para desplazarse en sentido vertical y horizontal, es preciso agregar las barras de desplazamiento para definir sus propiedades.
Ejemplo
Este ejemplo muestra cómo utilizar los controles de barra de desplazamiento horizontal y vertical para desplazarse en ambos sentidos por una imagen de un formulario. Al hacer clic en las barras de desplazamiento, las propiedades Left y Left del panel cambian de acuerdo con los valores de las barras de desplazamiento, lo que se traduce en el efecto de desplazamiento real.
Este ejemplo crea una imagen grande en el formulario o un rectángulo con una X que conecta las cuatro esquinas diagonalmente.
El código de control de eventos del evento ValueChanged cambia las propiedades Left o Left de Panel por el valor modificado de la barra de desplazamiento. Estas propiedades disminuyen al desplazarse hacia la derecha con la barra de desplazamiento horizontal y hacia abajo con la vertical. Y a la inversa, aumentan cuando se desplaza en las direcciones contrarias.
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Public Class Scrolling
Inherits System.Windows.Forms.Form
Private WithEvents HScrollBar1 As System.Windows.Forms.HScrollBar
Private WithEvents VScrollBar1 As System.Windows.Forms.VScrollBar
Private Panel1 As System.Windows.Forms.Panel
Private Label1 As System.Windows.Forms.Label
Private Label2 As System.Windows.Forms.Label
Private Label3 As System.Windows.Forms.Label
Private Label4 As System.Windows.Forms.Label
Private PictureBox1 As System.Windows.Forms.PictureBox
Private MainMenu1 As System.Windows.Forms.MainMenu
Public Sub New()
InitializeComponent()
Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim blackpen As New Pen(Color.Black)
Dim g As Graphics = Graphics.FromImage(bmp)
g.FillRectangle(New SolidBrush(Color.Gainsboro), 0, 0, bmp.Width, bmp.Height)
g.DrawLine(blackpen, 0, 0, bmp.Width, bmp.Height)
g.DrawLine(blackpen, 0, bmp.Height, bmp.Width, 0)
g.Dispose()
Me.PictureBox1.Image = bmp
Me.PictureBox1.Size = bmp.Size
Me.VScrollBar1.Maximum = bmp.Height + Me.ClientSize.Height
Me.HScrollBar1.Maximum = bmp.Width + Me.ClientSize.Width
Me.HScrollBar1.Value = 0
Me.Text = "x = 0, y = 0"
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
MyBase.Dispose(disposing)
End Sub
Private Sub InitializeComponent()
Me.MainMenu1 = New System.Windows.Forms.MainMenu
Me.HScrollBar1 = New System.Windows.Forms.HScrollBar
Me.VScrollBar1 = New System.Windows.Forms.VScrollBar
Me.Panel1 = New System.Windows.Forms.Panel
Me.PictureBox1 = New System.Windows.Forms.PictureBox
Me.Label1 = New System.Windows.Forms.Label
Me.Label2 = New System.Windows.Forms.Label
Me.Label3 = New System.Windows.Forms.Label
Me.Label4 = New System.Windows.Forms.Label
'
' HScrollBar1
'
Me.HScrollBar1.LargeChange = 240
Me.HScrollBar1.Location = New System.Drawing.Point(0, 255)
Me.HScrollBar1.Maximum = 493
Me.HScrollBar1.Size = New System.Drawing.Size(227, 13)
'
' VScrollBar1
'
Me.VScrollBar1.LargeChange = 268
Me.VScrollBar1.Location = New System.Drawing.Point(227, 0)
Me.VScrollBar1.Maximum = 549
Me.VScrollBar1.Size = New System.Drawing.Size(13, 255)
'
' Panel1
'
Me.Panel1.Controls.Add(Me.PictureBox1)
Me.Panel1.Controls.Add(Me.Label1)
Me.Panel1.Controls.Add(Me.Label2)
Me.Panel1.Controls.Add(Me.Label3)
Me.Panel1.Controls.Add(Me.Label4)
Me.Panel1.Size = New System.Drawing.Size(480, 536)
'
' PictureBox1
'
Me.PictureBox1.Location = New System.Drawing.Point(88, 36)
Me.PictureBox1.Size = New System.Drawing.Size(304, 464)
'
' Label1
'
Me.Label1.Location = New System.Drawing.Point(8, 8)
Me.Label1.Size = New System.Drawing.Size(82, 20)
Me.Label1.Text = "Top Left"
'
' Label2
'
Me.Label2.Location = New System.Drawing.Point(400, 8)
Me.Label2.Size = New System.Drawing.Size(82, 20)
Me.Label2.Text = "Top Right"
'
' Label3
'
Me.Label3.Location = New System.Drawing.Point(8, 508)
Me.Label3.Size = New System.Drawing.Size(82, 20)
Me.Label3.Text = "Bottom Left"
'
' Label4
'
Me.Label4.Location = New System.Drawing.Point(400, 508)
Me.Label4.Size = New System.Drawing.Size(82, 20)
Me.Label4.Text = "Bottom Right"
'
' Scrolling
'
Me.Controls.Add(VScrollBar1)
Me.Controls.Add(HScrollBar1)
Me.Controls.Add(Panel1)
Me.Menu = Me.MainMenu1
Me.Text = "Scrolling"
End Sub
Shared Sub Main()
Application.Run(New Scrolling)
End Sub
Private Sub HScrollBar1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles HScrollBar1.ValueChanged
Me.Panel1.Left = -Me.HScrollBar1.Value
' Display the current values in the title bar.
Me.Text = "x = " + Me.Panel1.Location.X.ToString + ", y = " + Me.Panel1.Location.Y.ToString
End Sub
Private Sub VScrollBar1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles VScrollBar1.ValueChanged
Me.Panel1.Top = -Me.VScrollBar1.Value
' Display the current values in the title bar.
Me.Text = "x = " + Me.Panel1.Location.X.ToString + ", y = " + Me.Panel1.Location.Y.ToString
End Sub
End Class
using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.Reflection;
namespace Scrolling
{
public class Scrolling : System.Windows.Forms.Form
{
private System.Windows.Forms.HScrollBar hScrollBar1;
private System.Windows.Forms.VScrollBar vScrollBar1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.MainMenu mainMenu1;
public Scrolling()
{
InitializeComponent();
Bitmap bmp = new Bitmap(pictureBox1.Width,pictureBox1.Height);
Pen blackpen = new Pen(Color.Black);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(new SolidBrush(Color.Gainsboro),0,0,bmp.Width,bmp.Height);
g.DrawLine(blackpen,0,0, bmp.Width, bmp.Height);
g.DrawLine(blackpen,0,bmp.Height,bmp.Width,0);
g.Dispose();
this.pictureBox1.Image = bmp;
this.pictureBox1.Size = bmp.Size;
this.vScrollBar1.Maximum = bmp.Height + this.ClientSize.Height;
this.hScrollBar1.Maximum = bmp.Width + this.ClientSize.Width;
this.hScrollBar1.Value = 0;
this.Text = "x = 0, y = 0";
}
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.hScrollBar1 = new System.Windows.Forms.HScrollBar();
this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
this.panel1 = new System.Windows.Forms.Panel();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
//
// hScrollBar1
//
this.hScrollBar1.LargeChange = 240;
this.hScrollBar1.Location = new System.Drawing.Point(0, 255);
this.hScrollBar1.Maximum = 493;
this.hScrollBar1.Size = new System.Drawing.Size(227, 13);
this.hScrollBar1.ValueChanged += new System.EventHandler(this.hScrollBar1_ValueChanged);
//
// vScrollBar1
//
this.vScrollBar1.LargeChange = 268;
this.vScrollBar1.Location = new System.Drawing.Point(227, 0);
this.vScrollBar1.Maximum = 549;
this.vScrollBar1.Size = new System.Drawing.Size(13, 255);
this.vScrollBar1.ValueChanged += new System.EventHandler(this.vScrollBar1_ValueChanged);
//
// panel1
//
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.label4);
this.panel1.Size = new System.Drawing.Size(480, 536);
//
// pictureBox1
//
this.pictureBox1.Location = new System.Drawing.Point(88, 36);
this.pictureBox1.Size = new System.Drawing.Size(304, 464);
//
// label1
//
this.label1.Location = new System.Drawing.Point(8, 8);
this.label1.Size = new System.Drawing.Size(82, 20);
this.label1.Text = "Top Left";
//
// label2
//
this.label2.Location = new System.Drawing.Point(400, 8);
this.label2.Size = new System.Drawing.Size(82, 20);
this.label2.Text = "Top Right";
//
// label3
//
this.label3.Location = new System.Drawing.Point(8, 508);
this.label3.Size = new System.Drawing.Size(82, 20);
this.label3.Text = "Bottom Left";
//
// label4
//
this.label4.Location = new System.Drawing.Point(400, 508);
this.label4.Size = new System.Drawing.Size(82, 20);
this.label4.Text = "Bottom Right";
//
// Scrolling
//
this.Controls.Add(this.vScrollBar1);
this.Controls.Add(this.hScrollBar1);
this.Controls.Add(this.panel1);
this.Menu = this.mainMenu1;
this.Text = "Scrolling";
}
static void Main()
{
Application.Run(new Scrolling());
}
private void hScrollBar1_ValueChanged(object sender, System.EventArgs e)
{
this.panel1.Left = -this.hScrollBar1.Value;
// Display the current values in the title bar.
this.Text = "x = " + this.panel1.Location.X + ", y = " + this.panel1.Location.Y;
}
private void vScrollBar1_ValueChanged(object sender, System.EventArgs e)
{
this.panel1.Top = -this.vScrollBar1.Value;
// Display the current values in the title bar.
this.Text = "x = " + this.panel1.Location.X + ", y = " + this.panel1.Location.Y;
}
}
}
Compilar el código
Para este ejemplo se requieren referencias a los siguientes espacios de nombres:
Vea también
Tareas
Cómo: Controlar los cambios de orientación y de resolución
Otros recursos
Controles de formularios Windows Forms en .NET Compact Framework