gpt4 book ai didi

.net - 双击复选框?

转载 作者:行者123 更新时间:2023-12-01 23:55:50 25 4
gpt4 key购买 nike

我有几个代表人的复选框。像这样:

[ ] George
[ ] Sam
[ ] Steve
[ ] Lisa

可以单独勾选,当然也可以不勾选。代码在检查状态发生变化时运行。该代码在其算法中使用所有复选框的状态。

但是,我希望它们在双击时也能表现得像单选按钮。也就是说,如果您双击其中一个,它应该会变为选中状态(无论其之前的状态如何),而所有其他的都将变为未选中状态。

不幸的是,复选框没有双击事件。很明显,我需要通过使用 mousedown(或 mouse up)和计时器、秒表等的组合来模拟双击。

最终我知道我会通过实验找到解决方案,所以如果我想出一个好的解决方案,我会在这里发布。但我有一种感觉,其他人之前有过“模拟双击”,如果有人可以发布一个很好的片段来从 mousedown 事件创建这样的事件,那就太好了。

附言该代码段应以某种方式涉及 SystmInformation.DoubleClickTime。 (这是区分双击和“两次单击”的毫秒数。一台机器和另一台机器可能不同。)单击代码在经过那么多时间之前不应运行,以确保双击不会待定。 (因为正如我提到的,代码使用了所有复选框的状态。)

附言我正在将 VB.NET Express 2008 用于 winforms 应用程序,但如果需要,我可能可以转换 C# 形式,我认为这可能适用于所有 .NET 平台。

最佳答案

需要进行手术,编写 CheckBox 类时假定标准单击和双击行为已关闭。此代码有效,您将不得不放弃 MouseUp 事件:

Imports System.ComponentModel

Public Class MyCheckBox
Inherits CheckBox

Public Sub New()
Me.SetStyle(ControlStyles.StandardClick Or ControlStyles.StandardDoubleClick, True)
End Sub

Protected Overrides Sub OnMouseUp(ByVal mevent As System.Windows.Forms.MouseEventArgs)
'' NOTE: do *not* call the base method
MyBase.ResetFlagsandPaint()
End Sub

<EditorBrowsable(EditorBrowsableState.Always), Browsable(True)> _
Public Shadows Custom Event DoubleClick As EventHandler
AddHandler(ByVal value As EventHandler)
AddHandler MyBase.DoubleClick, value
End AddHandler
RemoveHandler(ByVal value As EventHandler)
RemoveHandler MyBase.DoubleClick, value
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal value As EventArgs)
Throw New InvalidOperationException '' should never be raised by user code
End RaiseEvent
End Event
End Class

事件处理程序可能如下所示:

Private Sub MyCheckBox_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyCheckBox1.DoubleClick, MyCheckBox2.DoubleClick, MyCheckBox3.DoubleClick, MyCheckBox4.DoubleClick

For Each box As CheckBox In GroupBox1.Controls
box.Checked = box.Equals(sender)
Next
End Sub

可能会有一些手术的副作用,我没有看到任何但没有彻底测试。我建议您不要实际执行此操作,该功能在很大程度上是不可发现的。没有用户会意识到双击现在可以做一些特别的事情。

关于.net - 双击复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143841/

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