Label コントロールでマウスの右ボタンのダブルクリックイベントを検出するコードを紹介します。
Windows Form アプリケーションで、Labelコントロールでマウスの右ボタンのダブルクリックを検出したい場合があります。
通常のダブルクリックの場合は、Labelコントロールの DoubleClickイベントハンドラを実装すればよいですが、左右どちらのボタンのダブルクリックでも
イベントが発生します。右クリックを検出するためにボタンの判定をしたいですが、DoubleClickイベントハンドラの引数は、EventArgs であり、ボタンの判定ができないです。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LabelDemo
{
public partial class FormDoubleClick : Form
{
public FormDoubleClick()
{
InitializeComponent();
}
private void FormDoubleClick_Load(object sender, EventArgs e)
{
}
private void label1_DoubleClick(object sender, EventArgs e)
{
// if (e.Button == MouseButtons.Right) としたいが、EventArgs オブジェクトには、Buttonプロパティが存在しない
}
}
}
コードで、MouseDoubleClickのイベントハンドラを設定します。
下図のフォームを作成します。フォームにLabelを配置します。
以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LabelDemo
{
public partial class FormDoubleClick : Form
{
public FormDoubleClick()
{
InitializeComponent();
label1.MouseDoubleClick += new MouseEventHandler(this.label1_DoubleClickCustom);
}
private void label1_DoubleClickCustom(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right) {
MessageBox.Show("右ボタンのダブルクリックです。");
}
}
private void FormDoubleClick_Load(object sender, EventArgs e)
{
}
}
}
フォームのコンストラクタで、Labelコントロールの MouseDoubleClick イベントに、イベントハンドラを追加します。
public FormDoubleClick()
{
InitializeComponent();
label1.MouseDoubleClick += new MouseEventHandler(this.label1_DoubleClickCustom);
}
イベントハンドラに設定するメソッドです。フォームデザイナでイベントハンドラを作成した場合、伊弁tのハンドラメソッドの第二引数は EventArgs
で自動作成されますが、
今回は、MouseEventArgs
型で宣言します。
MouseEventArgs
オブジェクトのパラメーターのため、Buttonプロパティが存在し、ボタンの判定ができます。
private void label1_DoubleClickCustom(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right) {
MessageBox.Show("右ボタンのダブルクリックです。");
}
}
プロジェクトを実行します。下図のフォームが表示されます。
ラベルにマウスポインタを重ねてマウスの右ボタンをダブルクリックします。下図のダイアログが表示されます。
ラベルにマウスポインタを重ねて、マウスの左ボタンをダブルクリックした場合にはダイアログが表示されず、マウスの右ボタンのダブルクリックのみが検出できます。