如果子窗口关闭按钮事件处理程序快速单击多次,则会执行多次



我的ChildWindow将关闭按钮和处理程序分配给Click事件。代码(仅示例):

声明关闭按钮:

<Button x:Name="CloseButton" Click="OnCloseButtonClick" />

专用计数器(用于诊断问题):

private uint _i;

关闭事件处理程序:

OnCloseButtonClick(object sender, RoutedEventArgs e)
{
     DialogResult = true;
     System.Diagnostics.Debug(_i++);
}

快速点击程序后可以输出"1"、"2"、"3"等...正如我知道在设置 DialogResult = true(或 false)后,应该关闭 ChildWindow,并且不应该有任何方法可以第二次引发 CloseButton 的Click事件。

任何人都可以帮助我找出问题的原因并帮助解决它而无需布尔标志(已执行/!

从我的评论中复制

此问题是因为关闭会激活关闭窗口动画以关闭窗口,

这意味着按钮事件在动画完成且窗口关闭之前可用,请参阅 在 Silverlight 子窗口关闭动画期间,用户可以单击任何按钮

一个快速而肮脏的解决方案是添加

((Button)sender).IsEnabled=false;

到你开始点击处理程序函数。

相关内容

  • 没有找到相关文章

最新更新