Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何按特定顺序运行多个事件?_C#_Wpf - Fatal编程技术网

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

C# 如何按特定顺序运行多个事件?,c#,wpf,C#,Wpf,我是c#新手,对WPF应用程序上的事件有疑问。我有两个事件(Button_Click和myslider_ValueChanged),希望myslider_ValueChanged在Button_Click之后运行。我尝试过使用EventHandler,但它仍然同时运行两个事件。有没有一种更简单的方法,比如嵌套事件?谢谢你的帮助。我已在下面附上我的EventHandler尝试 namespace program { public partial class Main

我是c#新手,对WPF应用程序上的事件有疑问。我有两个事件(Button_Click和myslider_ValueChanged),希望myslider_ValueChanged在Button_Click之后运行。我尝试过使用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
            }
名称空间程序
{
公共部分类主窗口:窗口
{
公共事件事件处理程序\u单击;
公共事件事件处理程序\u值已更改;
单击时受保护的空(事件参数e)
{
如果(_Click!=null)
{
_点击(此,e);
}
}
受保护的无效值已更改(事件参数e)
{
单击(EventArgs.Empty);
}
私有void初始化()
{
_单击+=新建事件处理程序(\u单击);
_ValueChanged+=新事件处理程序(\u ValueChanged);
_单击+=\u值更改;
}
私有无效按钮\u单击(对象发送者,System.Windows.RoutedEventArgs e)
{
//代码在这里
}
私有void myslider_值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
//代码在这里
}

您应该让myslider\u ValueChanged调用一个不同的方法来执行工作,然后单击按钮调用该新方法

例如:

       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();
        }
private void myslider\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
HandleValueSliderChanged();
}
私有void HandleValueSliderChanged(){
//代码在这里
}
私有无效按钮\u单击(对象发送者,System.Windows.RoutedEventArgs e)
{
//代码在这里
HandleValueSliderChanged();
}

您应该让myslider\u ValueChanged调用一个不同的方法来执行工作,然后单击按钮调用该新方法

例如:

       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();
        }
private void myslider\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
HandleValueSliderChanged();
}
私有void HandleValueSliderChanged(){
//代码在这里
}
私有无效按钮\u单击(对象发送者,System.Windows.RoutedEventArgs e)
{
//代码在这里
HandleValueSliderChanged();
}

因此,只需在按钮单击事件中设置myslider.IsEnabled=true。并在之前的初始化方法中将其设置为false。

因此,只需在按钮单击事件中设置myslider.IsEnabled=true。并在之前的初始化方法中将其设置为false。

这与应该的设置完全相同。如果用户单击屁股,您想做什么应该执行按钮处理程序。与滑块相同。当运行程序时,myslider和按钮都会激活。我只希望在按钮单击后滑块会激活。这与应该的完全一样。您想做什么?如果用户单击按钮,则应执行按钮处理程序。与滑块相同。当您取消程序“myslider”和“button activate”。我只希望在单击按钮后滑块处于活动状态。感谢您的帮助,这似乎仍然与按钮同时运行,而不是在按钮之后。主要问题是我有一个Convert.ToDouble(s);检查输入是否为有效数字,如果不是,则输入错误。当程序启动slider=3且所有用户输入为0时,在我的情况下,这是无效的。抱歉,您的原始问题中没有明确说明这一点(通过运行,您的意思是启用)。在这种情况下,您可以删除slider事件处理程序(除非您需要它用于其他用途),在设计器中将slider Enabled属性设置为false,并在按钮事件处理程序中将slider Enabled属性设置为true。感谢您的帮助,这似乎仍然与按钮同时运行,而不是在按钮之后。主要问题是我有一个Convert.ToDouble;检查输入是否为有效数字,如果不是,则输入错误。当程序启动slider=3且所有用户输入为0时,在我的情况下,这是无效的。抱歉,您的原始问题中没有明确说明这一点(通过运行,您的意思是启用)。在这种情况下,您可以删除slider事件处理程序(除非您需要它用于其他用途),在设计器中将滑块启用属性设置为false,并在按钮事件处理程序中将滑块启用属性设置为true。