DOBON.NET

現在どのマウスボタンが押されているか調べる

現在どのマウスボタンが押されているかという状態は、Control.MouseButtonsプロパティで取得できます。

次の例では現在どのマウスボタンが押されているか調べ、その結果を出力しています。

VB.NET
コードを隠すコードを選択
'Imports System.Windows.Forms

'現在どのマウスボタンが押されているか調べる
If (Control.MouseButtons And MouseButtons.Left) = MouseButtons.Left Then
    Console.WriteLine("マウスの左ボタンが押されています。")
End If
If (Control.MouseButtons And MouseButtons.Right) = MouseButtons.Right Then
    Console.WriteLine("マウスの右ボタンが押されています。")
End If
If (Control.MouseButtons And MouseButtons.Middle) = MouseButtons.Middle Then
    Console.WriteLine("マウスの中央ボタンが押されています。")
End If

'5つのボタンが付いたマウスMicrosoft IntelliMouse Explorerでの
'XBUTTON1とXBUTTON2を調べる
'Windows2000以降のみ
If (Control.MouseButtons And MouseButtons.XButton1) = MouseButtons.XButton1 Then
    Console.WriteLine("マウスのXBUTTON1が押されています。")
End If
If (Control.MouseButtons And MouseButtons.XButton2) = MouseButtons.XButton2 Then
    Console.WriteLine("マウスのXBUTTON2が押されています。")
End If
C#
コードを隠すコードを選択
//using System.Windows.Forms;

//現在どのマウスボタンが押されているか調べる
if ((Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left)
{
    Console.WriteLine("マウスの左ボタンが押されています。");
}
if ((Control.MouseButtons & MouseButtons.Right) == MouseButtons.Right)
{
    Console.WriteLine("マウスの右ボタンが押されています。");
}
if ((Control.MouseButtons & MouseButtons.Middle) == MouseButtons.Middle)
{
    Console.WriteLine("マウスの中央ボタンが押されています。");
}

//5つのボタンが付いたマウスMicrosoft IntelliMouse Explorerでの
//XBUTTON1とXBUTTON2を調べる
//Windows2000以降のみ
if ((Control.MouseButtons & MouseButtons.XButton1) == MouseButtons.XButton1)
{
    Console.WriteLine("マウスのXBUTTON1が押されています。");
}
if ((Control.MouseButtons & MouseButtons.XButton2) == MouseButtons.XButton2)
{
    Console.WriteLine("マウスのXBUTTON2が押されています。");
}

上記のコードでは、例えばマウスの左ボタンが押されているかを「(Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left」(VB.NETでは、「Control.MouseButtons And MouseButtons.Left) = MouseButtons.Left」)がTrueになるかで調べています。この部分を「Control.MouseButtons == MouseButtons.Left」(VB.NETでは、「Control.MouseButtons = MouseButtons.Left」)にしてしまうと、マウスの左ボタンと別のボタンが同時に押されている場合、Falseになってしまいます。マウスの左ボタンが単独で押されている場合のみTrueになります。

これは、Control.MouseButtonsプロパティの値が、MouseButtons列挙値のビットごとの組み合わせになるためです。つまり、例えばマウスの左ボタンと右ボタンが同時に押されている場合は、Control.MouseButtonsプロパティの値は「MouseButtons.Left | MouseButtons.Right」(VB.NETでは、「MouseButtons.Left Or MouseButtons.Right」)になります。

  • 履歴:
  • 2018/6/11 「(Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left」に関する説明を追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • コードの先頭に記述されている「Imports ??? がソースファイルの一番上に書かれているものとする」(C#では、「using ???; がソースファイルの一番上に書かれているものとする」)の意味が分からないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。