这可能听起来像是一个非常愚蠢的问题,但我注意到,当我从Click
或Button
继承我的班级时,我的自定义按钮的UserControl
行为会有所不同。
我正在开发一些具有自定义外观的控件,其中包括一个按钮。默认的用户控件类声明如下:
public partial class cButton : UserControl
在我添加了所有GUI内容后,我将其添加到我的表单中并测试了点击行为。
当我快速连续点击按钮时,它只记录其他点击,甚至不是每次点击。我认为测试代码有问题,但是当我将确切的代码复制到正常的Winforms按钮时,无论多快,都会记录每次点击。
编辑:如果我没有点击快速,则用户控制会记录每次点击,即我在每次点击之间等待几秒钟。
我将自定义控件的删除更改为继承自按钮类,并且绝对不会对任何代码进行任何其他更改:
public partial class cButton : Button
当我进行点击测试时,自定义按钮表现良好,就像winforms按钮一样,没有错过点击。
为了测试一下,我在表单中添加了一个列表框,并在其click事件中添加了相同的测试代码,它的作用就像一个非按钮,只是偶尔注册一次点击。
我认为应该始终如一地处理点击,但显然不是那么简单。
我从中产生的问题:
按钮的作用有何不同,我该怎么做以确保正确 当无法从
Button
继承时,点击行为?
答案 0 :(得分:1)
我认为您遇到的问题是,如果您点击该按钮太快,则会将其注册为双击而非点击。您可以通过双击写入输出来检查这一点,这样如果您的代码没有触发,请检查是否有双击事件。
答案 1 :(得分:1)
您的自定义UserControl
区分了单击和双击。
要使其像按钮一样运行,您需要设置StandardDoubleClick
控件样式,以便当用户快速连续点击两次时,控件会注册两个单个点击并引发两个单击事件,而不是双击事件。
在构造函数中添加以下语句:
this.SetStyle(ControlStyles.StandardDoubleClick, false);