2011-12-01 84 views
1

我是c#的新手,對WPF應用程序中的事件有疑問。我有兩個事件(Button_Click和myslider_ValueChanged),並希望在Button_Click之後運行myslider_ValueChanged。我曾嘗試使用EventHandler,但它同時仍然運行兩個事件。有沒有更簡單的方法來做到這一點,如嵌套事件?任何幫助表示讚賞,謝謝。我在下面附加了我的EventHandler嘗試。如何按特定順序運行多個事件?

namespace program 
    { 
     public partial class MainWindow : Window 
     { 

      public event EventHandler _Click; 
      public event EventHandler _ValueChanged; 

      protected void On_Click(EventArgs e) 
      { 
       if (_Click != null) 
       { 
        _Click(this, e); 
       } 
      } 

      protected void On_ValueChanged(EventArgs e) 
      { 
       On_Click(EventArgs.Empty); 

      } 

      private void Initialize() 
      { 
       _Click += new EventHandler(_Click); 
       _ValueChanged += new EventHandler(_ValueChanged); 
       _Click += _ValueChanged; 
      } 


      private void Button_Click(object sender, System.Windows.RoutedEventArgs e) 
      { 
       //Code here 
      } 

      private void myslider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
      { 
      //Code here 
      } 
+0

這完全像它應該。您想做什麼?如果用戶點擊按鈕,則應該執行按鈕處理程序。與滑塊相同。 – dasheddot

+0

運行程序時,myslider和按鈕都會激活。我只希望在點擊按鈕後滑塊處於活動狀態。 –

回答

4

你應該有myslider_ValueChanged調用不同的方法來完成工作,然後調用新的方法從button_click。

例如:

 private void myslider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
     { 
      HandleValueSliderChanged(); 
     } 
     private void HandleValueSliderChanged() { 
      //Code here 
     } 

     private void Button_Click(object sender, System.Windows.RoutedEventArgs e) 
     { 
      //Code here 
      HandleValueSliderChanged(); 
     } 
+0

感謝您的幫助,這似乎仍然與按鈕同時運行,而不是之後。主要問題是我有一個Convert.ToDouble(s);它檢查輸入是否是有效的數字,如果不是,則輸入錯誤。當程序啓動滑塊= 3並且所有的用戶輸入都是0時,這在我的情況下是無效的。 –

+0

對不起,您的原始問題中並不清楚(通過運行,您的意思是啓用)。在這種情況下,您可以刪除滑塊事件處理程序(除非您需要它),在設計器中將滑塊Enabled屬性設置爲false,並在Button事件處理程序中將滑塊Enabled屬性設置爲true。 –

+0

很好,謝謝。 –

0

所以剛纔設置的按鈕單擊事件中myslider.IsEnabled =真。並在之前的Initialize方法中將其設置爲false。