无法访问MouseEventArgs获取鼠标状态?

Dav*_*vid 12 .net c# mouse winforms

我有一个包含许多控件的表单.我需要检测鼠标是否已关闭或是否已启动.大多数时候,我没有MouseEventArgs.

有没有mouseEventArgs可以快速简便地判断鼠标是否已关闭?

有替代方案,还是这样的唯一途径?:

foreach (Control c in this.Controls)
{
    c.MouseUp += new MouseEventHandler(globalMouseUp);
    c.MouseDown += new MouseEventHandler(globalMouseDown);
}


bool isMouseUp = true;


private void globalMouseDown(object sender, MouseEventArgs e)
{
    isMouseUp = false;
}

private void globalMouseUp(object sender, MouseEventArgs e)
{
    isMouseUp = true;
}
Run Code Online (Sandbox Code Playgroud)

Lar*_*ech 19

您可以尝试使用计时器进行检查:

private void timer1_Tick(object sender, EventArgs e) {
  this.Text = "Mouse Is " + (Control.MouseButtons == MouseButtons.Left);
}
Run Code Online (Sandbox Code Playgroud)

  • 因为我花了一段时间来弄清楚没有名称空间的意思,也许这会对人们有所帮助:System.Windows.Forms.MouseButtons pressedButtons = System.Windows.Forms.Control.MouseButtons; (7认同)
  • 如果使用WPF通过System.Windows.Input输入进行开发,则可以使用if(Mouse.LeftButton == MouseButtonState.Pressed)。 (4认同)

Eng*_*mdy 8

检查 Control.MouseButtons 静态属性:

if (Control.MouseButtons == MouseButtons.Left)
{
}
Run Code Online (Sandbox Code Playgroud)