VB.Net Tutorial/Event/Mouse Event — различия между версиями

Материал из VB Эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 15:54, 26 мая 2010

Double and single click

<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class PictureBoxSingleDoubleClicked

  public Shared Sub Main
       Application.Run(New Form1)
  End Sub

End class Public Class Form1

   Private oldcolor As Color
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       PictureBox1.Image = System.Drawing.Image.FromFile("yourfile.jpg")
       Label1.Text = "Loaded"
   End Sub
   Private Sub Button1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
       If (e.Button <> MouseButtons.Left) Then
           Label1.Text = "Left button"
       End If
   End Sub
   Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
       Label1.Text = "single cliked"
   End Sub
   Private Sub PictureBox1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.DoubleClick
       Label1.Text = "double clicked"
   End Sub
   Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
       PictureBox1.BackColor = System.Drawing.Color.Gray
       PictureBox1.Image = System.Drawing.Image.FromFile("yourfile.jpg")
       Label1.Text = "(" + Str(e.X) + "," + Str(e.Y) + ")"
   End Sub
   Private Sub PictureBox1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
       PictureBox1.BackColor = oldcolor
       PictureBox1.Image = System.Drawing.Image.FromFile("yourfile.jpg")
       Label1.Text = "Exit"
   End Sub
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       oldcolor = PictureBox1.BackColor
   End Sub

End Class

<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Class Form1

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing AndAlso components IsNot Nothing Then
           components.Dispose()
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "NOTE: The following procedure is required by the Windows Form Designer
   "It can be modified using the Windows Form Designer.  
   "Do not modify it using the code editor.
   <System.Diagnostics.DebuggerStepThrough()> _
   Private Sub InitializeComponent()
       Me.Button1 = New System.Windows.Forms.Button
       Me.Label1 = New System.Windows.Forms.Label
       Me.PictureBox1 = New System.Windows.Forms.PictureBox
       CType(Me.PictureBox1, System.ruponentModel.ISupportInitialize).BeginInit()
       Me.SuspendLayout()
       "
       "Button1
       "
       Me.Button1.Location = New System.Drawing.Point(181, 231)
       Me.Button1.Name = "Button1"
       Me.Button1.Size = New System.Drawing.Size(75, 23)
       Me.Button1.TabIndex = 0
       Me.Button1.Text = "load pic"
       Me.Button1.UseVisualStyleBackColor = True
       "
       "Label1
       "
       Me.Label1.AutoSize = True
       Me.Label1.Location = New System.Drawing.Point(28, 9)
       Me.Label1.Name = "Label1"
       Me.Label1.Size = New System.Drawing.Size(41, 12)
       Me.Label1.TabIndex = 1
       Me.Label1.Text = "Label1"
       "
       "PictureBox1
       "
       Me.PictureBox1.Location = New System.Drawing.Point(20, 30)
       Me.PictureBox1.Name = "PictureBox1"
       Me.PictureBox1.Size = New System.Drawing.Size(391, 189)
       Me.PictureBox1.TabIndex = 2
       Me.PictureBox1.TabStop = False
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(431, 266)
       Me.Controls.Add(Me.PictureBox1)
       Me.Controls.Add(Me.Label1)
       Me.Controls.Add(Me.Button1)
       Me.Name = "Form1"
       Me.Text = "Form1"
       CType(Me.PictureBox1, System.ruponentModel.ISupportInitialize).EndInit()
       Me.ResumeLayout(False)
       Me.PerformLayout()
   End Sub
   Friend WithEvents Button1 As System.Windows.Forms.Button
   Friend WithEvents Label1 As System.Windows.Forms.Label
   Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox

End Class</source>

Form mouse move event

<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class FormRefresh

  public Shared Sub Main
       Application.Run(New Form1)
  End Sub

End class Public Class Form1

   Private MouseX As Integer
   Private MouseY As Integer
   Dim rectangle1 As Rectangle = New Rectangle(15, 35, 80, 80)
   Private Sub Form1_MouseMove(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.MouseEventArgs) _
         Handles Me.MouseMove
       MouseX = e.X
       MouseY = e.Y
       Me.Invalidate()
   End Sub
   Private Sub Form1_Paint(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.PaintEventArgs) _
         Handles Me.Paint
         
         rectangle1.X = MouseX
         rectangle1.Y = MouseY
       Dim canvas As Graphics = e.Graphics  
       canvas.DrawRectangle(Pens.DarkRed, rectangle1)
   End Sub

End Class

<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Class Form1

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing AndAlso components IsNot Nothing Then
           components.Dispose()
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "NOTE: The following procedure is required by the Windows Form Designer
   "It can be modified using the Windows Form Designer.  
   "Do not modify it using the code editor.
   <System.Diagnostics.DebuggerStepThrough()> _
   Private Sub InitializeComponent()
       Me.SuspendLayout()
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(469, 387)
       Me.Name = "Form1"
       Me.Text = "Redrawing by Invalidating"
       Me.ResumeLayout(False)
   End Sub

End Class</source>

Mouse Enter and Leave

<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class MouseEnterLeave

  public Shared Sub Main
       Application.Run(New Form1)
  End Sub

End class Public Class Form1

   Private ButtonBackColor As Color = Color.LightGreen
   Private Sub Button2_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.MouseEnter
       ButtonBackColor = Color.Yellow
   End Sub
   Private Sub Button2_MouseLeave(ByVal sender As Object,ByVal e As System.EventArgs) Handles Button2.MouseLeave
       ButtonBackColor = Color.Red
   End Sub
   Private Sub Button2_MouseDown(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button2.MouseDown
       ButtonBackColor = Color.Green
   End Sub
   Private Sub Button2_MouseUp(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button2.MouseUp
       ButtonBackColor = Color.LightGreen
       Button2.Refresh()
   End Sub
   Private Sub Button2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Button2.Paint
       Dim canvas As Graphics = e.Graphics
       canvas.Clear(ButtonBackColor)
       Dim atomPen As Pen = New Pen(Color.Blue, 2)
       Dim largerFont As Font = New Font(Me.Font.Name, 10)
       e.Graphics.DrawString("This is a form", largerFont, Brushes.Black,0, 20)
   End Sub
   Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button2.Click
       MsgBox("Button2 clicked!", MsgBoxStyle.Exclamation,"Painting on Controls")
   End Sub

End Class

<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Class Form1

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing AndAlso components IsNot Nothing Then
           components.Dispose()
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "NOTE: The following procedure is required by the Windows Form Designer
   "It can be modified using the Windows Form Designer.  
   "Do not modify it using the code editor.
   <System.Diagnostics.DebuggerStepThrough()> _
   Private Sub InitializeComponent()
       Me.Panel1 = New System.Windows.Forms.Panel
       Me.Button2 = New System.Windows.Forms.Button
       Me.SuspendLayout()
       "
       "Panel1
       "
       Me.Panel1.Location = New System.Drawing.Point(56, 32)
       Me.Panel1.Name = "Panel1"
       Me.Panel1.Size = New System.Drawing.Size(368, 40)
       Me.Panel1.TabIndex = 0
       "
       "Button2
       "
       Me.Button2.Location = New System.Drawing.Point(272, 104)
       Me.Button2.Name = "Button2"
       Me.Button2.Size = New System.Drawing.Size(152, 152)
       Me.Button2.TabIndex = 1
       Me.Button2.Text = "Button2"
       Me.Button2.UseVisualStyleBackColor = True
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(479, 284)
       Me.Controls.Add(Me.Button2)
       Me.Controls.Add(Me.Panel1)
       Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
       Me.MaximizeBox = False
       Me.Text = "Special Effects"
       Me.ResumeLayout(False)
   End Sub
   Friend WithEvents Panel1 As System.Windows.Forms.Panel
   Friend WithEvents Button2 As System.Windows.Forms.Button

End Class</source>

Mouse Events Illustation

<source lang="vbnet">Option Strict On imports System imports System.Drawing imports System.Windows.Forms public class MouseEvents : inherits Form

 private lbl as Label
 private WithEvents btnReset as Button
 public sub New()
   Size = new Size(400,600)
   btnReset = new Button()
   btnReset.Parent = me
   btnReset.Location = new Point(250,50)
   btnReset.Text = "Reset"
   lbl = new Label()
   lbl.Parent = me
   lbl.Location = new Point(50,50)
   lbl.Size = new Size(250,250)
   lbl.BorderStyle = BorderStyle.Fixed3D
   
   AddHandler lbl.MouseEnter, AddressOf lbl_MouseEnter
   AddHandler lbl.MouseHover, AddressOf lbl_MouseHover
   AddHandler lbl.MouseLeave, AddressOf lbl_MouseLeave
   AddHandler lbl.MouseDown, AddressOf lbl_MouseDown
     AddHandler lbl.MouseMove, AddressOf lbl_MouseMove
   AddHandler lbl.MouseUp, AddressOf lbl_MouseUp
   AddHandler lbl.MouseWheel, AddressOf lbl_MouseWheel
   AddHandler lbl.Click, AddressOf lbl_Click
   AddHandler lbl.DoubleClick, AddressOf lbl_DoubleClick
 end sub
 public shared sub Main() 
   Application.Run(new MouseEvents())
 end sub
 private sub btnReset_Click(ByVal sender as object, _
                ByVal e as EventArgs) _
                  Handles btnReset.Click
   lbl.Text = ""
 end sub
 private sub lbl_MouseEnter(ByVal sender as object, _
                ByVal e as EventArgs)
   lbl.Text = "MouseEnter"
   Console.WriteLine("Label MouseEnter")
 end sub
 private sub lbl_MouseHover(ByVal sender as object, _
                ByVal e as EventArgs)
   lbl.Text = "MouseHover"
   Console.WriteLine("Label MouseHover")
 end sub
 private sub lbl_MouseLeave(ByVal sender as object, _
                ByVal e as EventArgs)
   lbl.Text = "MouseLeave"
   Console.WriteLine("Label MouseLeave")
 end sub
 private sub lbl_MouseDown(ByVal sender as object, _
               ByVal e as MouseEventArgs)
   lbl.Text = "MouseDown"
   Console.WriteLine("Label MouseDown")
   Console.WriteLine("Button:  " + e.Button.ToString())
   Console.WriteLine("Clicks:  " + e.Clicks.ToString())
   Console.WriteLine("Delta:  " + e.Delta.ToString())
   Console.WriteLine("X:  " + e.X.ToString())
   Console.WriteLine("Y:  " + e.Y.ToString())
 end sub
 private sub lbl_MouseMove(ByVal sender as object,ByVal e as MouseEventArgs)
   lbl.Text = "MouseMove"
   Console.WriteLine("Label MouseMove")
   Console.WriteLine("Button:  " + e.Button.ToString())
   Console.WriteLine("Clicks:  " + e.Clicks.ToString())
   Console.WriteLine("Delta:  " + e.Delta.ToString())
   Console.WriteLine("X:  " + e.X.ToString())
   Console.WriteLine("Y:  " + e.Y.ToString())
 end sub
 private sub lbl_MouseUp(ByVal sender as object, _
               ByVal e as MouseEventArgs)
   lbl.Text = "MouseUp"
   Console.WriteLine("Label MouseUp")
   Console.WriteLine("Button:  " + e.Button.ToString())
   Console.WriteLine("Clicks:  " + e.Clicks.ToString())
   Console.WriteLine("Delta:  " + e.Delta.ToString())
   Console.WriteLine("X:  " + e.X.ToString())
   Console.WriteLine("Y:  " + e.Y.ToString())
 end sub
 private sub lbl_MouseWheel(ByVal sender as object,ByVal e as MouseEventArgs)
   lbl.Text = "MouseWheel"
   Console.WriteLine("Label MouseWheel")
   Console.WriteLine("Button:  " + e.Button.ToString())
   Console.WriteLine("Clicks:  " + e.Clicks.ToString())
   Console.WriteLine("Delta:  " + e.Delta.ToString())
   Console.WriteLine("X:  " + e.X.ToString())
   Console.WriteLine("Y:  " + e.Y.ToString())
 end sub
 private sub lbl_Click(ByVal sender as object,ByVal e as EventArgs)
   lbl.Text = "Click"
   Console.WriteLine("Label Click")
 end sub
 private sub lbl_DoubleClick(ByVal sender as object,ByVal e as EventArgs)
   lbl.Text = "DoubleClick"
   Console.WriteLine("Label DoubleClick")
 end sub
 protected overrides sub OnMouseEnter(ByVal e as EventArgs)
   myBase.OnMouseEnter(e)
   Console.WriteLine("Form MouseEnter")
 end sub
 protected overrides sub OnMouseHover(ByVal e as EventArgs)
   myBase.OnMouseHover(e)
   Console.WriteLine("Form MouseHover")
 end sub
 protected overrides sub OnMouseLeave(ByVal e as EventArgs)
   myBase.OnMouseLeave(e)
   Console.WriteLine("Form MouseLeave")
 end sub

end class</source>

Mouse move event

<source lang="vbnet">Imports System.Windows.Forms public class MouseMoveEvent

  public Shared Sub Main
       Application.Run(New Form1)
  End Sub

End class Public Class Form1

   Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
   Public Sub New()
       MyBase.New()
       "This call is required by the Windows Form Designer.
       InitializeComponent()
       "Add any initialization after the InitializeComponent() call
   End Sub
   "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
  
   Private WithEvents Label1 As System.Windows.Forms.Label
   Private WithEvents lblX As System.Windows.Forms.Label
   Private WithEvents Label3 As System.Windows.Forms.Label
   Private WithEvents lblY As System.Windows.Forms.Label
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.Container
   "NOTE: The following procedure is required by the Windows Form Designer
   "It can be modified using the Windows Form Designer.  
   "Do not modify it using the code editor.
   <System.Diagnostics.DebuggerStepThroughAttribute()> Private Sub InitializeComponent()
       Me.Label1 = New System.Windows.Forms.Label()
       Me.Label3 = New System.Windows.Forms.Label()
       Me.lblX = New System.Windows.Forms.Label()
       Me.lblY = New System.Windows.Forms.Label()
       Me.SuspendLayout()
       "
       "Label1
       "
       Me.Label1.Location = New System.Drawing.Point(8, 16)
       Me.Label1.Name = "Label1"
       Me.Label1.Size = New System.Drawing.Size(80, 16)
       Me.Label1.TabIndex = 0
       Me.Label1.Text = "X coordinate"
       "
       "Label3
       "
       Me.Label3.Location = New System.Drawing.Point(8, 64)
       Me.Label3.Name = "Label3"
       Me.Label3.Size = New System.Drawing.Size(80, 16)
       Me.Label3.TabIndex = 2
       Me.Label3.Text = "Y coordinate"
       "
       "lblX
       "
       Me.lblX.Location = New System.Drawing.Point(184, 16)
       Me.lblX.Name = "lblX"
       Me.lblX.Size = New System.Drawing.Size(80, 16)
       Me.lblX.TabIndex = 1
       "
       "lblY
       "
       Me.lblY.Location = New System.Drawing.Point(184, 64)
       Me.lblY.Name = "lblY"
       Me.lblY.Size = New System.Drawing.Size(80, 16)
       Me.lblY.TabIndex = 3
       "
       "Form1
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(312, 101)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.lblY, Me.Label3, Me.lblX, Me.Label1})
       Me.Name = "Form1"
       Me.Text = "Form1"
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
       lblX.Text = e.X
       lblY.Text = e.Y
   End Sub

End Class</source>