如果快速单击多次,ChildWindow关闭按钮事件处理程序将执行多次

时间:2012-11-19 11:42:19

标签: c# .net silverlight event-handling

我的ChildWindow已将CloseButton和处理程序分配给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事件。 / p>

任何人都可以帮助我找出问题的原因,并帮助解决它没有bool标志(执行/!执行)?

1 个答案:

答案 0 :(得分:2)

从我的评论中复制

问题是因为关闭会激活关闭窗口动画以关闭窗口,这意味着按钮事件可用,直到动画结束并且窗口关闭,请参阅During Silverlight ChildWindow closing animation user can click any button

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

((Button)sender).IsEnabled=false;

在您开始时点击处理程序功能。

相关问题