Label コントロールでマウスの右ボタンのダブルクリックイベントを検出する

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のイベントハンドラを設定します。

実装例

UI

下図のフォームを作成します。フォームにLabelを配置します。
Label コントロールでマウスの右ボタンのダブルクリックイベントを検出する:画像1

コード

以下のコードを記述します。

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("右ボタンのダブルクリックです。");
    }
  }

実行結果

プロジェクトを実行します。下図のフォームが表示されます。
Label コントロールでマウスの右ボタンのダブルクリックイベントを検出する:画像2

ラベルにマウスポインタを重ねてマウスの右ボタンをダブルクリックします。下図のダイアログが表示されます。
ラベルにマウスポインタを重ねて、マウスの左ボタンをダブルクリックした場合にはダイアログが表示されず、マウスの右ボタンのダブルクリックのみが検出できます。
Label コントロールでマウスの右ボタンのダブルクリックイベントを検出する:画像3


AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2024-07-11
Copyright © 1995–2025 iPentec all rights reserverd.