我有两个功能
private void Ellipse_ManipulationCompleted_1(object sender, ManipulationCompletedEventArgs e)
{
Counter++;
if (Counter == 1)
{
Startbtn_Click(sender, e);
}
}
private async void Startbtn_Click(object sender, RoutedEventArgs e)
{
Startbtn.IsEnabled = false;
Storyboard myStoryboard;
Random rnd = new Random();
int Story = rnd.Next(1, 3);
if (Story == 1)
{
myStoryboard = (Storyboard)this.Resources["Storyboard1"];
myStoryboard.Begin();
}
else if (Story == 2)
{
myStoryboard = (Storyboard)this.Resources["Storyboard2"];
myStoryboard.Begin();
}
await Task.Delay(12000);
Startbtn.IsEnabled = true;
Counter = 0;
}
我希望当Startbtn_Click运行时Ellipse_ManipulationCompleted_1被禁用,或者它不应被调用。
我是Windows应用开发的新手,所以任何帮助都可以。 提前谢谢
答案 0 :(得分:2)
Stopping方法完全不同(详见异步编程)。
在您的情况下,您的ManipulationCompleted是一个事件,如果您需要,您可以随时取消订阅:
private async void Startbtn_Click(object sender, RoutedEventArgs e)
{
// unsubscribe to the Event if you don't want to fire it
Ellipse.ManipulationCompleted -= Ellipse_ManipulationCompleted_1;
Startbtn.IsEnabled = false;
// your further actions
// ...
// subscribe again if you need
Ellipse.ManipulationCompleted += Ellipse_ManipulationCompleted_1;
还有其他解决方案,但这应该很简单并且有效。
答案 1 :(得分:1)
最好有一个单独的按钮来禁用方法Ellipse_ManipulationCompleted_1
,因为在使用程序时很容易混淆,禁用和启用此方法的代码都是用一种方法编写的名为Startbtn_Click
,所以我建议你将它们分开,以使程序的设计更精确。
接下来你可以做的是执行NotSupportedException
,你要标记为Obsolete
。完成此操作后,您可以使用EditorBrowsable
。
方法如下:
[EditorBrowsable( EditorBrowsableState.Never )]
[Obsolete( "...", false )]
private void Separatebtn_Click(object sender, ManipulationCompletedEventArgs e)
{
throw new NotSupportedException( "..." );
}
请注意,抛出异常有时很危险,因为它会产生一些其他错误,但如果您只是尝试禁用某个功能,则此选项不会受到太大影响。顺便说一句,这实际上不会删除该方法,因为它只会替换它,现在由您决定选择哪种方法。希望这有用!