如何在按钮上显示鼠标位置?

时间:2016-10-11 14:38:35

标签: vb.net winforms

VB.NET Visual Studio

我在运行时添加了几个按钮,我有一个用于click事件的MouseDown事件处理程序。左键单击工作正常,但右键单击事件会触发,但不会执行我需要的操作。

If e.Button = Windows.Forms.MouseButtons.Right Then
    If sender.Bounds.Contains(e.Location) = True Then
        ContextMenuStrip.Show(Cursor.Position)
    End If
End If

我缩短了这一点以便于阅读。

当我查看e.Location时,它会显示与按钮相关的鼠标位置。 因此,如果我的按钮位于400,600,则鼠标的位置应位于该区域,但鼠标位置返回20,30,因为它位于按钮内的20,30处。

如何正确执行此右键单击事件?

1 个答案:

答案 0 :(得分:1)

当鼠标停在你的控件上时,

MouseDown事件会升起,所以鼠标肯定在你的控制范围内,你不需要检查按钮是否包含e.Location

要显示上下文菜单条,如果将上下文菜单条指定给控件的ContextMenuStrip属性,则无需执行任何操作,菜单将自动显示。但是,如果出于任何原因想要处理MouseDown事件,您可以使用以下任一选项:

  • ContextMenuStrip1.Show(DirectCast(sender, Control), e.Location)

  • ContextMenuStrip1.Show(MousePosition)

注意:如果您想检查按钮中是否有e.Location,只是出于学习目的,您可以使用以下任一选项:

  • Button1.ClientRectangle.Contains(e.Location)
  • Button1.Bounds.Contains(Button1.Parent.PointToClient(Button1.PointToScreen(e.Location)))

使用PointToClientPointToScreenRectangleToClientRectangleToScreen控制方法的其他组合。