我在C#中编写了一个自定义控件(继承自Forms.Control)并且似乎工作正常,但是如果你按下按钮足够快就会出现问题:只有每一次点击都会调用click事件处理程序。如果你不快速按下它(不到每秒一次),就不会发生这种情况。无论您单击按钮的速度有多快,都会调用mouseUp和mouseDown处理程序。
当然,罐装winform按钮不会发生。
我无法使用固定按钮,因为我正在编写.net紧凑框架的应用程序,所以我需要一个自定义控件才能使UI更具可呈现性。另外,我在完整版的.net框架上测试了我的代码,我仍然遇到同样的问题。
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
如果您点击得足够快,那么您将进入DoubleClick
领域。
根据上述MSDN页面,事件顺序为:
当执行此类用户操作时,控件将引发以下一系列事件:
如果您发现每Click
DoubleClick
个事件
有关禁用它的方法,请尝试查看此MSDN页面,讨论ControlStyles。
从上面链接:
StandardClick - 如果为true,则控件实施标准点击行为 StandardDoubleClick - 如果为true,则控件会实施标准DoubleClick行为。如果StandardClick位未设置为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));
答案 1 :(得分:0)
当你足够快地点击你的控件时,它会调用双击而不是单击。 所以,你应该在你的点击功能中做这样的事情:
{
control.Enabled = false;
......
control.Enabled = true;
}