2014-04-04 89 views
2

我有2個功能如何在執行某個其他功能時停止某個功能?

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

你在哪裏調用'Ellipse_ManipulationCompleted_1()'函數? –

+0

在動畫運行之前將您的layoutRoot網格IsHitTest屬性設置爲False。 – Jaihind

+0

Romasz給出的答案適用於我的案例。 – zap92

回答

2

停止方法是完全不同的主題(閱讀更多關於異步編程)。

在你的情況你在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; 

還有其他的解決方案,但是這應該是簡單和工作。

+0

感謝它的運作 – zap92

+2

@ zap92歡迎您。如果一個解決方案解決了你的問題,不要忘了接受它 - [閱讀更多](http://stackoverflow.com/about)。 – Romasz

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("..."); 
    }  

但是要注意,它有時危險的,因爲它創造了一些其他錯誤拋出異常,但該選項不會傷害多,如果你只是想禁用功能。順便說一下,這將不會刪除該方法,因爲它只會替換它,現在由您決定選擇哪種方法接收此方法。希望這有幫助!

相關問題