如何按特定顺序运行多个事件?

时间:2011-12-01 22:05:48

标签: c# wpf

我是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
            }

2 个答案:

答案 0 :(得分: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();
        }

答案 1 :(得分:0)

所以只需在Button click事件中设置myslider.IsEnabled = true即可。并在之前的Initialize方法中将其设置为false。