【发布时间】:2015-10-09 19:43:13
【问题描述】:
我希望 Winforms 中的 MouseDown 事件能够执行一些代码,直到一定的秒数或 MouseUp 事件被触发
我想要这样的东西
Dim counter As Integer = 0
Do Until Button.Key IsNot MouseDown
counter += 1
If counter > 3
Exit Do Loop
End If
Application.DoEvents()
Loop
现在我有它喜欢它
seconds = 0
m_mouseButtonIsNotDown = False
Do Until m_mouseButtonIsNotDown
If e.Button = Windows.Forms.MouseButtons.Left Then
seconds += 1
If seconds > 5 Then
m_mouseButtonIsNotDown = True
End If
End If
Application.DoEvents()
Loop
我正在寻找的期望行为是,如果他们在一定数量的循环内松开按钮,以处理如果它只是一个简单的鼠标点击事件的代码。如果 mousedown 已保持超过 3 或 5 秒,则切换到拖放模式,以便他们可以将所需的行移动到另一个 datagridview。我曾尝试使用 Timer 和 StopWatch 类,但它也无法按照我的预期工作。如果我有 mouseclick 事件和 mousedown 事件,则它不起作用,因为 mousedown 在基本单击事件上执行。有任何想法吗?请记住,它不能依赖于 mouseUp 事件,因为拖放不能拥有它。
【问题讨论】:
-
你为什么一直试图改变代码sn-p?它编译得很好,拥有可用的 HitTestInfo 对于其他用途可能很重要。
-
@HansPassant 它不会编译,除非你告诉你正在调光是什么。只是说 Dim hit = DataGridView1.HitTest(downPos.X, downPos.Y) 没有 As 子句不会编译
-
每个人都使用 Option Infer On,这是默认设置。如有必要,请提出相关问题。
-
@HansPassant 对不起,我不知道 VB 有这个选项可以让它在你不需要 As 子句变量的地方。