【问题标题】:Mimic MouseIn/Out模拟鼠标输入/输出
【发布时间】:2015-03-05 16:09:00
【问题描述】:

我试图在用户输入按钮时隐藏我的光标,并在他们离开按钮时显示它。

到目前为止,我正在使用 MouseEnterMouseLeave 事件

Private Sub btnbeis_MouseEnter(sender As System.Object, e As System.EventArgs) Handles btnBeis.MouseEnter
   Dim btn As Button = DirectCast(sender, Button)
   btn.FlatStyle = FlatStyle.Flat
   Cursor.Hide()
End Sub

Private Sub btnbeis_mouseLeave(sender As System.Object, e as system.EventArgs) Handles btnbeis.MouseLeave
    Dim btn As Button = DirectCast(sender, Button)
    btn.FlatStyle = FlatStyle.Standard
    cursor.Show()
End Sub

但是,因为每次用户移动鼠标时都会点击 MouseEnter,所以它一直隐藏鼠标

我找到了 MouseOut 事件,但它不适用于 vb,有什么可以模仿 mouseout 的吗? 这意味着我只希望它在鼠标离开按钮并第一次进入时点击

编辑

我在一个新表单上试过这个,效果很好

但是在这个表单上,它一直在点击 mouseEnter 和 MouseLeave,当我调试它时,它一直在从 mouseEnter 到 MouseLeave 并返回到 MouseEnter

mouseMove 下我没有任何代码,所以这不是问题

谢谢!

【问题讨论】:

  • Handles 子句的错字?
  • 对不起,只是我的打字错误,每次我移动鼠标时都会点击它,而不仅仅是当它进入按钮或离开按钮时
  • winforms 还是什么? MouseOut 不是 winforms 事件
  • @Plutonix 我正在使用 Winforms,这是我的问题,有什么可以模仿 MouseOut 的吗?
  • 那么您的代码中还有其他问题。 MouseEnter 和 MouseLeave 可以正常工作。查看MouseMove中的代码

标签: vb.net mouseevent mouseout


【解决方案1】:
Sub Button1MouseLeave(sender As Object, e As EventArgs)
    Cursor.Show()
End Sub

Sub Button1MouseEnter(sender As Object, e As EventArgs)
    Cursor.Hide()
End Sub

【讨论】:

  • 该代码有什么问题?您想在光标悬停在按钮上时将其隐藏并在离开按钮时再次显示?
  • 是的,但是 Cursor.Hide() 的工作方式是,如果它击中 cursor.Hide 两次,则需要两个 cursor.show() 才能显示,每次我移动鼠标时,它都会“节省” " 一个 cursor.hide()。我只希望它在第一次进入按钮时隐藏
  • 你如何测试你的代码?您在该表单上还有更多代码吗?如果是这样,您是否尝试过使用新的空白表格?没有像“显示/隐藏”堆栈这样的东西;每次鼠标进入按钮时都会触发该事件,这是完全正常的,但这并不意味着它每次触发时都会“重新隐藏”光标。
  • 你说得对,必须有一个相应的带有隐藏的节目。根据 MSDN,当你进入而不是当你一遍又一遍地移动时,输入应该触发。我成功地使用了他们的示例并且它有效:msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多