gpt4 book ai didi

c# - 为什么按钮处理点击的方式与非按钮不同

转载 作者:行者123 更新时间:2023-11-30 16:50:30 25 4
gpt4 key购买 nike

这听起来像是一个非常愚蠢的问题,但我注意到当我从 Button 继承我的类时,我的自定义按钮的 Click 行为有所不同>用户控件

我正在开发一些具有自定义外观的控件,其中包括一个按钮。默认的用户控件类声明是这样的:

public partial class cButton : UserControl

在我添加了所有 GUI 内容之后,我将其添加到我的表单中并测试了点击行为。

当我快速连续点击按钮时,它只会记录其他点击,甚至不会记录所有其他点击。我以为测试代码有问题,但是当我将确切的代码复制到普通的 Winforms 按钮时,无论多快,它都会记录每次点击。

编辑:如果我没有快速点击,用户控件会记录每次点击,即我在每次点击之间等待几秒钟。

我将自定义控件的 decleration 更改为从按钮类继承,并且绝对没有对任何代码进行其他更改:

public partial class cButton : Button

当我进行点击测试时,自定义按钮表现良好,就像 winforms 按钮一样,不会错过任何点击。

只是为了测试,我在表单中添加了一个列表框,并在其点击事件中添加了相同的测试代码,它就像一个非按钮,只是时不时地记录一次点击。

我认为点击应该得到一致的处理,但显然并没有那么简单。

我由此产生的问题:

What does a button do differently and what could I do to ensure proper click-behaviour when it is not possible to inherit from a Button?

最佳答案

您的自定义 UserControl 区分单击和双击。

要使其像按钮一样操作,您需要设置 StandardDoubleClick 控件样式,以便当用户快速连续单击两次时,控件会注册两次单次单击并引发两个点击事件,而不是双击事件。

在构造函数中添加以下语句:

this.SetStyle(ControlStyles.StandardDoubleClick, false);

关于c# - 为什么按钮处理点击的方式与非按钮不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com