【问题标题】:Button Click vs ShortCut Key (ALT) Event firing order按钮单击与快捷键 (ALT) 事件触发顺序
【发布时间】:2015-08-18 14:24:39
【问题描述】:

我在带有快捷键集 (ALT+S) 的表单上有一个 保存 按钮。 在datagridcellvalidated 事件中,我决定是否可以为用户启用或禁用此按钮。

类似于旧的 VB6 事件触发顺序问题.... 如果按钮当前已启用,但用户在数据网格单元格中放置了无效数据。如果他们单击按钮,单元格验证事件将触发,禁用按钮 - 没问题。相反,当他们输入错误数据并执行 ALT+S 时,单元格验证事件会触发,但在这种情况下,Button_Click 事件仍会触发。

有什么方法可以防止这种情况发生吗?基本上如果使用 ALT+,我不希望 Click 事件触发。

【问题讨论】:

  • 您可以做的一件事是在Button_click insted of cell_validate 上进行验证。在这种情况下,您将需要一个方法IsCellValid(cell) as boolean。在按钮单击中,您将执行if not IsCellValid(cell) then <focus on cell> return....另外,如何签入button.click - if not button.enabled then return

标签: vb.net winforms visual-studio-2010 events


【解决方案1】:

如果一切都失败了 - 有这个方法(在伪代码中)

Class Form

    private _validated as Boolean

    sub Cell_validate

        ' validate here and set
        _validated = true/false
    end sub

    sub Button_Click

        If not _validated then Return

        ' have your save logic here
    end sub          

End class

这样,当按钮禁用时,您将保护您的代码不执行Button_Click 的实际逻辑。

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2011-01-03
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多