Public Class Form1 Private WithEvents panel As Panel Private WithEvents pic As PictureBox Private x, y As Integer Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown Select Case e.KeyCode Case Keys.Up panel.AutoScrollPosition = New Point(0 - panel.AutoScrollPosition.X, 1 - panel.AutoScrollPosition.Y) Case Keys.Down panel.AutoScrollPosition = New Point(0 - panel.AutoScrollPosition.X, -1 - panel.AutoScrollPosition.Y) Case Keys.Left panel.AutoScrollPosition = New Point(1 - panel.AutoScrollPosition.X, 0 - panel.AutoScrollPosition.Y) Case Keys.Right panel.AutoScrollPosition = New Point(-1 - panel.AutoScrollPosition.X, 0 - panel.AutoScrollPosition.Y) Case Else Return End Select End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load panel = New Panel With {.BorderStyle = BorderStyle.Fixed3D, .Dock = DockStyle.Fill, .AutoScroll = True} pic = New PictureBox With {.BorderStyle = BorderStyle.None, .SizeMode = PictureBoxSizeMode.AutoSize} panel.Controls.Add(pic) Me.Controls.Add(panel) Using ofd As New OpenFileDialog With {.Filter = "Image|*.bmp;*.jpg;*.png"} If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then pic.Image = Image.FromFile(ofd.FileName) End If End Using End Sub Private Sub pic_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pic.MouseDown If e.Button = Windows.Forms.MouseButtons.Left Then pic.Cursor = Cursors.Hand x = e.X y = e.Y End If End Sub Private Sub pic_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pic.MouseMove If e.Button = Windows.Forms.MouseButtons.Left Then Dim dx As Integer = x - e.X Dim dy As Integer = y - e.Y panel.AutoScrollPosition = New Drawing.Point((dx - panel.AutoScrollPosition.X), (dy - panel.AutoScrollPosition.Y)) End If End Sub Private Sub pic_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pic.MouseUp pic.Cursor = Cursors.Arrow End Sub End Class