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