マウスイベントとして重要なのは、MouseDown, MouseUp, MouseMove, MouseWheelでしょう。MouseDownイベントについてはすでに第24章で出てきました。これらは、Controlクラスで定義されています。デリゲートはMouseEventArgsを用います。Controlやこの派生クラスではOn系メソッドを利用できます。
MouseEventArgsのプロパティには次のようなものがあります。
プロパティ | プロパティ値 | get/set | 意味 |
---|---|---|---|
Button | MouseButtons | get | マウスのどのボタンが押されたか |
Clicks | int | get | マウスボタンが押されて離された回数 |
Delta | int | get | ホィールの移動量 |
Location | Point | get | マウスイベント生成時のマウス位置 |
X | int | get | イベント生成時のマウスのx座標 |
Y | int | get | イベント生成時のマウスのy座標 |
LocationプロパティはC#2.0から追加されました。
MouseButtons列挙体については第24章を参照してください。
では、簡単なサンプルプログラムを見てみましょう。マウスが移動すると、タイトルバーにマウス位置が刻々と表示されます。ボタンを押すと、その座標がクライアント領域に表示されます。ボタンを放しても表示されます。
// mouse01.cs using System; using System.Drawing; using System.Windows.Forms; class mouse01 { public static void Main() { Application.Run(new MyForm()); } } class MyForm : Form { string str = ""; public MyForm() { Text = "猫でもわかるC#プログラミング"; BackColor = SystemColors.Window; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = e.Graphics; g.DrawString(str, Font, new SolidBrush(ForeColor), new PointF(10F, 10F)); } protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); str = string.Format("({0}, {1})", e.X, e.Y); str += "[MouseDown]"; Invalidate(); } protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); str = string.Format("({0}, {1})", e.X, e.Y); str += "[MouseUp]"; Invalidate(); } protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); Text = string.Format("MouseMove[({0}, {1})]", e.X, e.Y); } }実行結果は次のようになります。
Update 02/Dec/2006 By Y.Kumei