本文档已存档,并且将不进行维护。

Control.MouseDown 事件

当鼠标指针位于控件上并按下鼠标键时发生。

命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)

public event MouseEventHandler MouseDown
/** @event */
public void add_MouseDown (MouseEventHandler value)

/** @event */
public void remove_MouseDown (MouseEventHandler value)

JScript 支持使用事件,但不支持进行新的声明。

鼠标事件按下列顺序发生:

  1. MouseEnter

  2. MouseMove

  3. MouseHover / MouseDown / MouseWheel

  4. MouseUp

  5. MouseLeave

Note注意

除非 TabControl.TabPages 集合中至少有一个 TabPage,否则不会引发 TabControl 类的下列事件:ClickDoubleClickMouseDownMouseUpMouseHoverMouseEnterMouseLeaveMouseMove。如果集合中至少有一个 TabPage,并且用户与选项卡控件标头(显示 TabPage 名称的地方)交互,则 TabControl 将引发相应的事件。但是,如果用户交互发生在选项卡页的工作区内,则 TabPage 将引发相应的事件。

有关处理事件的更多信息,请参见 使用事件

下面的代码示例演示如何使用不同的鼠标事件在 Panel 上绘制鼠标路径。对于发生的每个 MouseMoveMouseDown 事件,都将一个线段添加到 GraphicsPath。要更新该图形,请为每个 MouseDownMouseUp 事件上的 Panel 调用 Invalidate 方法。此外,当 MouseWheel 事件发生时,图形路径将向上滚动或向下滚动。其他鼠标事件(如 MouseHover)也在屏幕上标识。同时屏幕上还显示有关 SystemInformation 类中鼠标的其他信息。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace MouseEvent
{
    public class Form1 : System.Windows.Forms.Form
    {
        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.Label label5;
        private System.Windows.Forms.Label label6;
        private System.Windows.Forms.Label label7;
        private System.Windows.Forms.Label label8;
        private System.Windows.Forms.Label label9;
        private System.Windows.Forms.Button clearButton;
        private System.Drawing.Drawing2D.GraphicsPath mousePath;
        private System.Windows.Forms.GroupBox groupBox1;

        private int fontSize = 20;        

        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }

        public Form1()
        {            
            mousePath = new System.Drawing.Drawing2D.GraphicsPath();

            this.panel1 = new System.Windows.Forms.Panel();
            this.label1 = new System.Windows.Forms.Label();
            this.clearButton = new System.Windows.Forms.Button();
            this.label2 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.label4 = new System.Windows.Forms.Label();
            this.label5 = new System.Windows.Forms.Label();
            this.label6 = new System.Windows.Forms.Label();
            this.label7 = new System.Windows.Forms.Label();
            this.label8 = new System.Windows.Forms.Label();
            this.label9 = new System.Windows.Forms.Label();
            this.groupBox1 = new System.Windows.Forms.GroupBox();

            // Mouse Events Label
            this.label1.Location = new System.Drawing.Point(24, 504);
            this.label1.Size = new System.Drawing.Size(392, 23);
            // DoubleClickSize Label
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(24, 48);
            this.label2.Size = new System.Drawing.Size(35, 13);
            // DoubleClickTime Label
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(24, 72);
            this.label3.Size = new System.Drawing.Size(35, 13);
            // MousePresent Label
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(24, 96);
            this.label4.Size = new System.Drawing.Size(35, 13);
            // MouseButtons Label
            this.label5.AutoSize = true;
            this.label5.Location = new System.Drawing.Point(24, 120);
            this.label5.Size = new System.Drawing.Size(35, 13);
            // MouseButtonsSwapped Label
            this.label6.AutoSize = true;
            this.label6.Location = new System.Drawing.Point(320, 48);
            this.label6.Size = new System.Drawing.Size(35, 13);
            // MouseWheelPresent Label
            this.label7.AutoSize = true;
            this.label7.Location = new System.Drawing.Point(320, 72);
            this.label7.Size = new System.Drawing.Size(35, 13);
            // MouseWheelScrollLines Label
            this.label8.AutoSize = true;
            this.label8.Location = new System.Drawing.Point(320, 96);
            this.label8.Size = new System.Drawing.Size(35, 13);
            // NativeMouseWheelSupport Label
            this.label9.AutoSize = true;
            this.label9.Location = new System.Drawing.Point(320, 120);
            this.label9.Size = new System.Drawing.Size(35, 13);

            // Mouse Panel
            this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
                | System.Windows.Forms.AnchorStyles.Right);
            this.panel1.BackColor = System.Drawing.SystemColors.ControlDark;
            this.panel1.Location = new System.Drawing.Point(16, 160);
            this.panel1.Size = new System.Drawing.Size(664, 320);
            this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseUp);
            this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
            this.panel1.MouseEnter += new System.EventHandler(this.panel1_MouseEnter);
            this.panel1.MouseHover += new System.EventHandler(this.panel1_MouseHover);
            this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
            this.panel1.MouseLeave += new System.EventHandler(this.panel1_MouseLeave);
            this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseDown);
            this.panel1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseWheel);

            // Clear Button
            this.clearButton.Anchor = (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
            this.clearButton.Location = new System.Drawing.Point(592, 504);
            this.clearButton.TabIndex = 1;
            this.clearButton.Text = "Clear";
            this.clearButton.Click += new System.EventHandler(this.clearButton_Click);
            
            // GroupBox
            this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
                | System.Windows.Forms.AnchorStyles.Right);
            this.groupBox1.Location = new System.Drawing.Point(16, 24);
            this.groupBox1.Size = new System.Drawing.Size(664, 128);
            this.groupBox1.Text = "System.Windows.Forms.SystemInformation";

            // Set up how the form should be displayed and add the controls to the form.
            this.ClientSize = new System.Drawing.Size(696, 534);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                        this.label9,this.label8,this.label7,this.label6,
                                        this.label5,this.label4,this.label3,this.label2,
                                        this.clearButton,this.panel1,this.label1,this.groupBox1});
            this.Text = "Mouse Event Example";

            // Displays information about the system mouse.
            label2.Text = "SystemInformation.DoubleClickSize: " + SystemInformation.DoubleClickSize.ToString();
            label3.Text = "SystemInformation.DoubleClickTime: " + SystemInformation.DoubleClickTime.ToString();
            label4.Text = "SystemInformation.MousePresent: " + SystemInformation.MousePresent.ToString();
            label5.Text = "SystemInformation.MouseButtons: " + SystemInformation.MouseButtons.ToString();
            label6.Text = "SystemInformation.MouseButtonsSwapped: " + SystemInformation.MouseButtonsSwapped.ToString();
            label7.Text = "SystemInformation.MouseWheelPresent: " + SystemInformation.MouseWheelPresent.ToString();
            label8.Text = "SystemInformation.MouseWheelScrollLines: " + SystemInformation.MouseWheelScrollLines.ToString();
            label9.Text = "SystemInformation.NativeMouseWheelSupport: " + SystemInformation.NativeMouseWheelSupport.ToString();

        }

        private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
        {
            // Update the mouse path with the mouse information
            Point mouseDownLocation = new Point(e.X, e.Y);

            string eventString = null;
            switch (e.Button) {
                case MouseButtons.Left:
                    eventString = "L";
                    break;
                case MouseButtons.Right:
                    eventString = "R";
                    break;
                case MouseButtons.Middle:
                    eventString = "M";
                    break;
                case MouseButtons.XButton1:
                    eventString = "X1";
                    break;
                case MouseButtons.XButton2:
                    eventString = "X2";
                    break;
                case MouseButtons.None:
                default:
                    break;
            }

            if (eventString != null) 
            {
                mousePath.AddString(eventString, FontFamily.GenericSerif, (int)FontStyle.Bold, fontSize, mouseDownLocation, StringFormat.GenericDefault);
            }
            else 
            {
                mousePath.AddLine(mouseDownLocation,mouseDownLocation);
            }
            panel1.Focus();
            panel1.Invalidate();
        }

        private void panel1_MouseEnter(object sender, System.EventArgs e) 
        {
            // Update the mouse event label to indicate the MouseEnter event occurred.
            label1.Text = sender.GetType().ToString() + ": MouseEnter";
        }

        private void panel1_MouseHover(object sender, System.EventArgs e) 
        {
            // Update the mouse event label to indicate the MouseHover event occurred.
            label1.Text = sender.GetType().ToString() + ": MouseHover";
        }

        private void panel1_MouseLeave(object sender, System.EventArgs e) 
        {
            // Update the mouse event label to indicate the MouseLeave event occurred.
            label1.Text = sender.GetType().ToString() + ": MouseLeave";
        }

        private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            // Update the mouse path that is drawn onto the Panel.
            int mouseX = e.X;
            int mouseY = e.Y;
            
            mousePath.AddLine(mouseX,mouseY,mouseX,mouseY);
        }

        private void panel1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            // Update the drawing based upon the mouse wheel scrolling.
      
            int numberOfTextLinesToMove = e.Delta * SystemInformation.MouseWheelScrollLines / 120;
            int numberOfPixelsToMove = numberOfTextLinesToMove * fontSize;

            if (numberOfPixelsToMove != 0) {
                System.Drawing.Drawing2D.Matrix translateMatrix = new  System.Drawing.Drawing2D.Matrix();
                translateMatrix.Translate(0, numberOfPixelsToMove);
                mousePath.Transform(translateMatrix);
            }
            panel1.Invalidate();
        }
        private void panel1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) 
        {
            Point mouseUpLocation = new System.Drawing.Point(e.X, e.Y);
        
            // Show the number of clicks in the path graphic.
            int numberOfClicks = e.Clicks;
            mousePath.AddString("    " + numberOfClicks.ToString(), 
                        FontFamily.GenericSerif, (int)FontStyle.Bold, 
                        fontSize, mouseUpLocation, StringFormat.GenericDefault);

            panel1.Invalidate();
        }

        private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
        {    
            // Perform the painting of the Panel.
            e.Graphics.DrawPath(System.Drawing.Pens.DarkRed, mousePath);
        }

        private void clearButton_Click(object sender, System.EventArgs e)
        {
            // Clear the Panel display.
            mousePath.Dispose();
            mousePath = new System.Drawing.Drawing2D.GraphicsPath();
            panel1.Invalidate();
        }
    }
}

package MouseEvent;
import System.*;
import System.Drawing.*;
import System.Windows.Forms.*;

public class Form1 extends System.Windows.Forms.Form
{
    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.Label label5;
    private System.Windows.Forms.Label label6;
    private System.Windows.Forms.Label label7;
    private System.Windows.Forms.Label label8;
    private System.Windows.Forms.Label label9;
    private System.Windows.Forms.Button clearButton;
    private System.Drawing.Drawing2D.GraphicsPath mousePath;
    private System.Windows.Forms.GroupBox groupBox1;
    private int fontSize = 20;

    /** @attribute STAThread()
     */
    public static void main(String[] args)
    {
        Application.Run(new Form1());
    } //main

    public Form1()
    {
        mousePath = new System.Drawing.Drawing2D.GraphicsPath();

        this.panel1 = new System.Windows.Forms.Panel();
        this.label1 = new System.Windows.Forms.Label();
        this.clearButton = new System.Windows.Forms.Button();
        this.label2 = new System.Windows.Forms.Label();
        this.label3 = new System.Windows.Forms.Label();
        this.label4 = new System.Windows.Forms.Label();
        this.label5 = new System.Windows.Forms.Label();
        this.label6 = new System.Windows.Forms.Label();
        this.label7 = new System.Windows.Forms.Label();
        this.label8 = new System.Windows.Forms.Label();
        this.label9 = new System.Windows.Forms.Label();
        this.groupBox1 = new System.Windows.Forms.GroupBox();
        // Mouse Events Label
        this.label1.set_Location(new System.Drawing.Point(24, 504));
        this.label1.set_Size(new System.Drawing.Size(392, 23));
        // DoubleClickSize Label
        this.label2.set_AutoSize(true);
        this.label2.set_Location(new System.Drawing.Point(24, 48));
        this.label2.set_Size(new System.Drawing.Size(35, 13));
        // DoubleClickTime Label
        this.label3.set_AutoSize(true);
        this.label3.set_Location(new System.Drawing.Point(24, 72));
        this.label3.set_Size(new System.Drawing.Size(35, 13));
        // MousePresent Label
        this.label4.set_AutoSize(true);
        this.label4.set_Location(new System.Drawing.Point(24, 96));
        this.label4.set_Size(new System.Drawing.Size(35, 13));
        // MouseButtons Label
        this.label5.set_AutoSize(true);
        this.label5.set_Location(new System.Drawing.Point(24, 120));
        this.label5.set_Size(new System.Drawing.Size(35, 13));
        // MouseButtonsSwapped Label
        this.label6.set_AutoSize(true);
        this.label6.set_Location(new System.Drawing.Point(320, 48));
        this.label6.set_Size(new System.Drawing.Size(35, 13));
        // MouseWheelPresent Label
        this.label7.set_AutoSize(true);
        this.label7.set_Location(new System.Drawing.Point(320, 72));
        this.label7.set_Size(new System.Drawing.Size(35, 13));
        // MouseWheelScrollLines Label
        this.label8.set_AutoSize(true);
        this.label8.set_Location(new System.Drawing.Point(320, 96));
        this.label8.set_Size(new System.Drawing.Size(35, 13));
        // NativeMouseWheelSupport Label
        this.label9.set_AutoSize(true);
        this.label9.set_Location(new System.Drawing.Point(320, 120));
        this.label9.set_Size(new System.Drawing.Size(35, 13));
        // Mouse Panel
        this.panel1.set_Anchor(System.Windows.Forms.AnchorStyles.Top
            | System.Windows.Forms.AnchorStyles.Left
            | System.Windows.Forms.AnchorStyles.Right);
        this.panel1.set_BackColor(System.Drawing.SystemColors.get_ControlDark());
        this.panel1.set_Location(new System.Drawing.Point(16, 160));
        this.panel1.set_Size(new System.Drawing.Size(664, 320));
        this.panel1.add_MouseUp(
            new System.Windows.Forms.MouseEventHandler(this.panel1_MouseUp));
        this.panel1.add_Paint(new System.Windows.Forms.PaintEventHandler(
            this.panel1_Paint));
        this.panel1.add_MouseEnter(new System.EventHandler(
            this.panel1_MouseEnter));
        this.panel1.add_MouseHover(new System.EventHandler(
            this.panel1_MouseHover));
        this.panel1.add_MouseMove(
            new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove));
        this.panel1.add_MouseLeave(
            new System.EventHandler(this.panel1_MouseLeave));
        this.panel1.add_MouseDown(
            new System.Windows.Forms.MouseEventHandler(this.panel1_MouseDown));
        this.panel1.add_MouseWheel(
            new System.Windows.Forms.MouseEventHandler(this.panel1_MouseWheel));
        // Clear Button
        this.clearButton.set_Anchor(System.Windows.Forms.AnchorStyles.Top
            | System.Windows.Forms.AnchorStyles.Right);
        this.clearButton.set_Location(new System.Drawing.Point(592, 504));
        this.clearButton.set_TabIndex(1);
        this.clearButton.set_Text("Clear");
        this.clearButton.add_Click(new System.EventHandler(
            this.clearButton_Click));
        // GroupBox
        this.groupBox1.set_Anchor(System.Windows.Forms.AnchorStyles.Top
            | System.Windows.Forms.AnchorStyles.Left
            | System.Windows.Forms.AnchorStyles.Right);
        this.groupBox1.set_Location(new System.Drawing.Point(16, 24));
        this.groupBox1.set_Size(new System.Drawing.Size(664, 128));
        this.groupBox1.set_Text("System.Windows.Forms.SystemInformation");
        // Set up how the form should be displayed and add the controls
        // to the form.
        this.set_ClientSize(new System.Drawing.Size(696, 534));
        this.get_Controls().AddRange(new System.Windows.Forms.Control[] {
            this.label9, this.label8, this.label7, this.label6, this.label5,
            this.label4, this.label3, this.label2, this.clearButton,
            this.panel1, this.label1, this.groupBox1 });
        this.set_Text("Mouse Event Example");
        // Displays information about the system mouse.
        label2.set_Text("SystemInformation.DoubleClickSize: "
            + SystemInformation.get_DoubleClickSize().ToString());
        label3.set_Text("SystemInformation.DoubleClickTime: "
            + ((Int32)SystemInformation.get_DoubleClickTime()).ToString());
        label4.set_Text("SystemInformation.MousePresent: "
            + ((System.Boolean)SystemInformation.get_MousePresent()).ToString());
        label5.set_Text("SystemInformation.MouseButtons: "
            + ((Int32)SystemInformation.get_MouseButtons()).ToString());
        label6.set_Text("SystemInformation.MouseButtonsSwapped: "
            + ((System.Boolean)SystemInformation.get_MouseButtonsSwapped()).
            ToString());
        label7.set_Text("SystemInformation.MouseWheelPresent: "
            + ((System.Boolean)SystemInformation.get_MouseWheelPresent()).
            ToString());
        label8.set_Text("SystemInformation.MouseWheelScrollLines: "
            + ((Int32)SystemInformation.get_MouseWheelScrollLines()).
            ToString());
        label9.set_Text("SystemInformation.NativeMouseWheelSupport: "
            + ((System.Boolean)SystemInformation.
            get_NativeMouseWheelSupport()).ToString());
    } //Form1

    private void panel1_MouseDown(Object sender,
        System.Windows.Forms.MouseEventArgs e)
    {
        // Update the mouse path with the mouse information
        Point mouseDownLocation = new Point(e.get_X(), e.get_Y());

        String eventString = null;
        switch (e.get_Button()) {
            case MouseButtons.Left:
                eventString = "L";
                break;
            case MouseButtons.Right:
                eventString = "R";
                break;
            case MouseButtons.Middle:
                eventString = "M";
                break;
            case MouseButtons.XButton1:
                eventString = "X1";
                break;
            case MouseButtons.XButton2:
                eventString = "X2";
                break;
            case MouseButtons.None:
            default:
                break;
        }

        if (eventString != null) {
            mousePath.AddString(eventString, FontFamily.get_GenericSerif(),
                (int)FontStyle.Bold, fontSize, mouseDownLocation,
                StringFormat.get_GenericDefault());
        }
        else {
            mousePath.AddLine(mouseDownLocation, mouseDownLocation);
        }
        panel1.Focus();
        panel1.Invalidate();
    } //panel1_MouseDown

    private void panel1_MouseEnter(Object sender, System.EventArgs e)
    {
        // Update the mouse event label to indicate the MouseEnter event occurred.
        label1.set_Text(sender.GetType().ToString() + ": MouseEnter");
    } //panel1_MouseEnter

    private void panel1_MouseHover(Object sender, System.EventArgs e)
    {
        // Update the mouse event label to indicate the MouseHover event occurred.
        label1.set_Text(sender.GetType().ToString() + ": MouseHover");
    } //panel1_MouseHover

    private void panel1_MouseLeave(Object sender, System.EventArgs e)
    {
        // Update the mouse event label to indicate the MouseLeave event occurred.
        label1.set_Text(sender.GetType().ToString() + ": MouseLeave");
    } //panel1_MouseLeave

    private void panel1_MouseMove(Object sender,
        System.Windows.Forms.MouseEventArgs e)
    {
        // Update the mouse path that is drawn onto the Panel.
        int mouseX = e.get_X();
        int mouseY = e.get_Y();

        mousePath.AddLine(mouseX, mouseY, mouseX, mouseY);
    } //panel1_MouseMove

    private void panel1_MouseWheel(Object sender,
        System.Windows.Forms.MouseEventArgs e)
    {
        // Update the drawing based upon the mouse wheel scrolling.
        int numberOfTextLinesToMove =
            e.get_Delta() * SystemInformation.get_MouseWheelScrollLines() / 120;
        int numberOfPixelsToMove = numberOfTextLinesToMove * fontSize;

        if (numberOfPixelsToMove != 0) {
            System.Drawing.Drawing2D.Matrix translateMatrix =
                new System.Drawing.Drawing2D.Matrix();
            translateMatrix.Translate(0, numberOfPixelsToMove);
            mousePath.Transform(translateMatrix);
        }
        panel1.Invalidate();
    } //panel1_MouseWheel

    private void panel1_MouseUp(Object sender,
        System.Windows.Forms.MouseEventArgs e)
    {
        Point mouseUpLocation = new System.Drawing.Point(e.get_X(), e.get_Y());
        // Show the number of clicks in the path graphic.
        int numberOfClicks = e.get_Clicks();
        mousePath.AddString("    " + ((Int32)numberOfClicks).ToString(),
            FontFamily.get_GenericSerif(), (int)(FontStyle.Bold), fontSize,
            mouseUpLocation, StringFormat.get_GenericDefault());

        panel1.Invalidate();
    } //panel1_MouseUp

    private void panel1_Paint(Object sender,
        System.Windows.Forms.PaintEventArgs e)
    {
        // Perform the painting of the Panel.
        e.get_Graphics().DrawPath(System.Drawing.Pens.get_DarkRed(), mousePath);
    } //panel1_Paint

    private void clearButton_Click(Object sender, System.EventArgs e)
    {
        // Clear the Panel display.
        mousePath.Dispose();
        mousePath = new System.Drawing.Drawing2D.GraphicsPath();
        panel1.Invalidate();
    } //clearButton_Click
} //Form1

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0
显示: