Csharp/CSharp Tutorial/GUI Windows Forms/Mouse Event

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Mouse Button Left clicked

<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms;

class MouseConnect: Form {

    const int iMaxPoints = 1000;
    int       iNumPoints = 0;
    Point[]   apoint     = new Point[iMaxPoints];
  
    public static void Main()
    {
         Application.Run(new MouseConnect());
    }
    public MouseConnect()
    {
    }
    protected override void OnMouseDown(MouseEventArgs mea)
    {
         if (mea.Button == MouseButtons.Left)
         {
              iNumPoints = 0;
              Invalidate();
         }
    }
    protected override void OnMouseMove(MouseEventArgs mea)
    {
         if (mea.Button == MouseButtons.Left)
         {
              apoint[iNumPoints++] = new Point(mea.X, mea.Y);
  
              Graphics grfx = CreateGraphics();
              grfx.DrawLine(new Pen(ForeColor), mea.X, mea.Y, 
                                                mea.X, mea.Y + 1);
              grfx.Dispose();
         }
    }
    protected override void OnMouseUp(MouseEventArgs mea)
    {
         if (mea.Button == MouseButtons.Left)
              Invalidate();
    }
    protected override void OnPaint(PaintEventArgs pea)
    {
         Graphics grfx = pea.Graphics;
         Pen      pen  = new Pen(ForeColor);
  
         for (int i = 0   ; i < iNumPoints - 1; i++)
              for (int j = i + 1; j < iNumPoints; j++)
                   grfx.DrawLine(pen, apoint[i], apoint[j]);
   }

}</source>

Mouse Enter / Hover / Leave

<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms; public class MouseEnterHoverLeave : Form {

 private Button btn;
 string str = "";
 public MouseEnterHoverLeave()
 {
   Size = new Size(400,400);
   btn = new Button();
   btn.Parent = this;
   btn.Location = new Point(50,50);
   btn.Size = new Size(150,25);
   btn.MouseEnter += new System.EventHandler(btn_MouseEnter);
   btn.MouseHover += new System.EventHandler(btn_MouseHover);
   btn.MouseLeave += new System.EventHandler(btn_MouseLeave);
 }
 static void Main() 
 {
   Application.Run(new MouseEnterHoverLeave());
 }
 private void btn_MouseEnter(object sender, EventArgs e)
 {
   btn.Text = "MouseEnter";
 }
 private void btn_MouseHover(object sender, EventArgs e)
 {
   btn.Text = "MouseHover";
 }
 private void btn_MouseLeave(object sender, EventArgs e)
 {
   btn.Text = "MouseLeave";
 }
 protected override void OnMouseEnter(EventArgs e)
 {
   base.OnMouseEnter(e);
   Console.WriteLine("Form MouseEnter");
 }
 protected override void OnMouseHover(EventArgs e)
 {
   base.OnMouseHover(e);
   Console.WriteLine("Form MouseHover");
 }
 protected override void OnMouseLeave(EventArgs e)
 {
   base.OnMouseLeave(e);
   Console.WriteLine("Form MouseLeave");
 }

}</source>

Mouse event handlers

<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms; public class MouseEvents : Form {

 private Label lbl;
 public MouseEvents()
 {
   Size = new Size(400,600);
   lbl = new Label();
   lbl.Parent = this;
   lbl.Location = new Point(50,50);
   lbl.Size = new Size(150,25);
   lbl.BorderStyle = BorderStyle.Fixed3D;
   lbl.MouseEnter += new System.EventHandler(lbl_MouseEnter);
   lbl.MouseHover += new System.EventHandler(lbl_MouseHover);
   lbl.MouseLeave += new System.EventHandler(lbl_MouseLeave);
   lbl.MouseDown += new System.Windows.Forms.MouseEventHandler(lbl_MouseDown);
   lbl.MouseMove += new System.Windows.Forms.MouseEventHandler(lbl_MouseMove);
   lbl.MouseUp += new System.Windows.Forms.MouseEventHandler(lbl_MouseUp);
   lbl.MouseWheel += new System.Windows.Forms.MouseEventHandler(lbl_MouseWheel);
   lbl.Click += new System.EventHandler(lbl_Click);
   lbl.DoubleClick += new System.EventHandler(lbl_DoubleClick);
 }
 static void Main() 
 {
   Application.Run(new MouseEvents());
 }
 private void btnReset_Click(object sender, EventArgs e)
 {
   lbl.Text = "";
 }
 private void lbl_MouseEnter(object sender, EventArgs e)
 {
   lbl.Text = "MouseEnter";
   TextBoxDraw("Label MouseEnter");
 }
 private void lbl_MouseHover(object sender, EventArgs e)
 {
   lbl.Text = "MouseHover";
   TextBoxDraw("Label MouseHover");
 }
 private void lbl_MouseLeave(object sender, EventArgs e)
 {
   lbl.Text = "MouseLeave";
   TextBoxDraw("Label MouseLeave");
 }
 private void lbl_MouseDown(object sender, MouseEventArgs e)
 {
   lbl.Text = "MouseDown";
   string str;
   str = "Label MouseDown";
   str += "\r\n\tButton:  " + e.Button.ToString();
   str += "\r\n\tClicks:  " + e.Clicks.ToString();
   str += "\r\n\tDelta:  " + e.Delta.ToString();
   str += "\r\n\tX:  " + e.X.ToString();
   str += "\r\n\tY:  " + e.Y.ToString();
   TextBoxDraw(str);
 }
 private void lbl_MouseMove(object sender, MouseEventArgs e)
 {
   lbl.Text = "MouseMove";
   string str;
   str = "Label MouseMove";
   str += "\r\n\tButton:  " + e.Button.ToString();
   str += "\r\n\tClicks:  " + e.Clicks.ToString();
   str += "\r\n\tDelta:  " + e.Delta.ToString();
   str += "\r\n\tX:  " + e.X.ToString();
   str += "\r\n\tY:  " + e.Y.ToString();
   TextBoxDraw(str);
 }
 private void lbl_MouseUp(object sender, MouseEventArgs e)
 {
   lbl.Text = "MouseUp";
   string str;
   str = "Label MouseUp";
   str += "\r\n\tButton:  " + e.Button.ToString();
   str += "\r\n\tClicks:  " + e.Clicks.ToString();
   str += "\r\n\tDelta:  " + e.Delta.ToString();
   str += "\r\n\tX:  " + e.X.ToString();
   str += "\r\n\tY:  " + e.Y.ToString();
   TextBoxDraw(str);
 }
 private void lbl_MouseWheel(object sender, MouseEventArgs e)
 {
   lbl.Text = "MouseWheel";
   string str;
   str = "Label MouseWheel";
   str += "\r\n\tButton:  " + e.Button.ToString();
   str += "\r\n\tClicks:  " + e.Clicks.ToString();
   str += "\r\n\tDelta:  " + e.Delta.ToString();
   str += "\r\n\tX:  " + e.X.ToString();
   str += "\r\n\tY:  " + e.Y.ToString();
   TextBoxDraw(str);
 }
 private void lbl_Click(object sender, EventArgs e)
 {
   lbl.Text = "Click";
   TextBoxDraw("Label Click");
 }
 private void lbl_DoubleClick(object sender, EventArgs e)
 {
   lbl.Text = "DoubleClick";
   TextBoxDraw("Label DoubleClick");
 }
 protected override void OnMouseEnter(EventArgs e)
 {
   base.OnMouseEnter(e);
   TextBoxDraw("Form MouseEnter");
 }
 protected override void OnMouseHover(EventArgs e)
 {
   base.OnMouseHover(e);
   TextBoxDraw("Form MouseHover");
 }
 protected override void OnMouseLeave(EventArgs e)
 {
   base.OnMouseLeave(e);
   TextBoxDraw("Form MouseLeave");
 }
 private void TextBoxDraw(string str){
     Console.WriteLine(str);
 }

}</source>

Mouse Event information

<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms; public class MainClass{

 static void Main() 
 {
   Console.WriteLine("DoubleClickSize"+ SystemInformation.DoubleClickSize.ToString());
   Console.WriteLine("DoubleClickTime"+SystemInformation.DoubleClickTime.ToString());
   Console.WriteLine("MouseButtons"+SystemInformation.MouseButtons.ToString());
   Console.WriteLine("MouseButtonsSwapped"+SystemInformation.MouseButtonsSwapped.ToString());
   Console.WriteLine("MousePresent"+SystemInformation.MousePresent.ToString());
   Console.WriteLine("MouseWheelPresent"+SystemInformation.MouseWheelPresent.ToString());
   Console.WriteLine("MouseWheelScrollLines"+SystemInformation.MouseWheelScrollLines.ToString());
   Console.WriteLine("NativeMouseWheelSupport"+SystemInformation.NativeMouseWheelSupport.ToString());
 }

}</source>

DoubleClickSize{Width=4, Height=4}
DoubleClickTime500
MouseButtons5
MouseButtonsSwappedFalse
MousePresentTrue
MouseWheelPresentTrue
MouseWheelScrollLines3
NativeMouseWheelSupportTrue

Mouse Properties

<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms; public class MouseProperties : Form {

 private Label lbl;
 int i = 0;
 Cursor[] theCursors = {Cursors.AppStarting, 
             Cursors.Arrow, 
             Cursors.Hand, 
             Cursors.Help, 
             Cursors.No};
 public MouseProperties()
 {
   Size = new Size(400,600);
   lbl = new Label();
   lbl.Parent = this;
   lbl.Location = new Point(50,50);
   lbl.Size = new Size(150,25);
   lbl.BorderStyle = BorderStyle.Fixed3D;
   lbl.MouseEnter += new System.EventHandler(lbl_MouseEnter);
   lbl.MouseHover += new System.EventHandler(lbl_MouseHover);
   lbl.MouseLeave += new System.EventHandler(lbl_MouseLeave);
   lbl.MouseDown += new System.Windows.Forms.MouseEventHandler(lbl_MouseDown);
   lbl.MouseMove += new System.Windows.Forms.MouseEventHandler(lbl_MouseMove);
   lbl.MouseUp += new System.Windows.Forms.MouseEventHandler(lbl_MouseUp);
   lbl.MouseWheel += new System.Windows.Forms.MouseEventHandler(lbl_MouseWheel);
   lbl.Click += new System.EventHandler(lbl_Click);
   lbl.DoubleClick += new System.EventHandler(lbl_DoubleClick);
 }
 static void Main() 
 {
   Application.Run(new MouseProperties());
 }
 private void lbl_MouseEnter(object sender, EventArgs e)
 {
   lbl.Text = "MouseEnter";
   EventArgsStrings();
   lbl.Cursor = Cursors.WaitCursor;
 }
 private void lbl_MouseHover(object sender, EventArgs e)
 {
   lbl.Cursor = theCursors[i % 5];
   i++;
   lbl.Text = "MouseHover";
   EventArgsStrings();
   Console.WriteLine("Label MouseHover");
 }
 private void lbl_MouseLeave(object sender, EventArgs e)
 {
   lbl.Text = "MouseLeave";
   EventArgsStrings();
   Console.WriteLine("Label MouseLeave");
 }
 private void lbl_MouseDown(object sender, MouseEventArgs e)
 {
   lbl.Text = "MouseDown";
   MouseEventArgsStrings(e);
   Console.WriteLine("Label MouseDown");
 }
 private void lbl_MouseMove(object sender, MouseEventArgs e)
 {
   lbl.Text = "MouseMove";
   MouseEventArgsStrings(e);
   Console.WriteLine("Label MouseMove");
 }
 private void lbl_MouseUp(object sender, MouseEventArgs e)
 {
   lbl.Text = "MouseUp";
   MouseEventArgsStrings(e);
   Console.WriteLine("Label MouseUp");
 }
 private void lbl_MouseWheel(object sender, MouseEventArgs e)
 {
   lbl.Text = "MouseWheel";
   MouseEventArgsStrings(e);
   Console.WriteLine("Label MouseWheel");
 }
 private void lbl_Click(object sender, EventArgs e)
 {
   lbl.Text = "Click";
   EventArgsStrings();
   Console.WriteLine("Label Click");
 }
 private void lbl_DoubleClick(object sender, EventArgs e)
 {
   lbl.Text = "DoubleClick";
   EventArgsStrings();
   Console.WriteLine("Label DoubleClick");
 }
 private void EventArgsStrings()
 {
   string str;
   str = "\tCursor:  " + lbl.Cursor.ToString();
   str += "\r\n\tCapture:  " + lbl.Capture.ToString();
   str += "\r\n\tMouseButtons:  " + MouseButtons.ToString();
   str += "\r\n\tMousePosition:  " + MousePosition.ToString();
   str += "\r\n\tModifierKeys:  " + ModifierKeys.ToString();
   Console.WriteLine(str);
 }
 private void MouseEventArgsStrings(MouseEventArgs e)
 {
   string str;
   str = "\tButton:  " + e.Button.ToString();
   str += "\r\n\tClicks:  " + e.Clicks.ToString();
   str += "\r\n\tDelta:  " + e.Delta.ToString();
   str += "\r\n\tX:  " + e.X.ToString();
   str += "\r\n\tY:  " + e.Y.ToString();
   Console.WriteLine(str);
 }

}</source>