我已经用 C# 编写了一个自定义控件(继承自 Forms.Control),它似乎工作正常,但如果您按下按钮的速度足够快,则会出现问题:只有每隔一次单击才会调用单击事件处理程序。如果您不快速按下它(少于每秒一次),则不会发生这种情况。无论您点击按钮的速度有多快,mouseUp 和 mouseDown 处理程序总是会被调用。
当然,固定的 winform 按钮不会发生这种情况。
我无法使用固定按钮,因为我正在为 .net 紧凑型框架编写应用程序,所以我需要自定义控件以使 UI 更美观。另外,我在完整版的 .net 框架上测试了我的代码,但我仍然遇到同样的问题。
如有任何帮助,我们将不胜感激。谢谢!
最佳答案
如果您点击的速度足够快,您将进入 DoubleClick
领土。
根据上面的 MSDN 页面,事件的顺序是:
当这样的用户操作发生时,控件会引发以下一系列事件:
- MouseDown 事件。
- 点击事件。
- 鼠标点击事件。
- MouseUp 事件。
- MouseDown 事件。
- 双击事件。
- MouseDoubleClick 事件。
- MouseUp 事件
如果您注意到每个 DoubleClick
只有一个 Click
事件
有关禁用它的方法,请尝试查看此 MSDN 页面讨论 ControlStyles .
来自上面的链接:
StandardClick -- If true, the control implements the standard Click behavior.
StandardDoubleClick -- If true, the control implements the standard DoubleClick behavior. This style is ignored if the StandardClick bit is not set to true.
所以在您的控件构造函数或加载事件中试试这个:
this.SetStyle(ControlStyles.StandardClick, true );
this.SetStyle(ControlStyles.StandardDoubleClick, false);
由于 SetStyle
似乎不在 Compact Framework 中,您可以添加一个 DoublClick 事件并让它以编程方式触发 Click 事件,就像这样。
YourClickEvent(sender, new MouseEventArgs(System.Windows.Forms.MouseButtons.Left,1,0,0,0));
关于C#:自定义控件每隔一次单击调用一次单击处理程序(winform,不是 ASP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10712478/