2011-12-01 4 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 = true를 설정합니다. 이전에 Initialize 메소드에서 false로 설정하십시오.

관련 문제