WPF中如何在后台触发按钮的点击事件

时间:2021-01-12 23:28:19
刚接触WPF不久,今天才发现WPF的按钮竟然没有OnClick方法,WPF使用了什么 替代办法吗?请问该怎么做啊?由于我的按钮点击事件注册的一个拉姆达表达式,所以没法直接调用事件方法。

10 个解决方案

#1


还有请大神解释下为什么WPF不提供触发各个事件的方法,我想这一定有很深层次的原因

#2


用Click  替代了。 事件分为  冒泡事件与隧道事件

#3



<Button Click="Button_Click"></Button>



Button b=new Button();
b.Click+=new RoutedEventHandler(delegate(object sender,RoutedEventArgs r){});

#4


参考地址
触发事件是有的,只是你不知道

#5


引用 2 楼 duanzi_peng 的回复:
用Click  替代了。 事件分为  冒泡事件与隧道事件
我的意思是触发事件,而不是注册事件

#6


引用 4 楼 wpfLove 的回复:
参考地址
触发事件是有的,只是你不知道

  private void DoButtonClick()
  {
              ButtonAutomationPeer bam = new ButtonAutomationPeer(MyBtn);
              IInvokeProvider iip = bam.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
              iip.Invoke();
  }
这个方法太麻烦,而且不知道在出发哪个事件啊。如果这个按钮注册的双击和单击是不是都会被执行啊

#7


引用 3 楼 sunny906 的回复:

<Button Click="Button_Click"></Button>



Button b=new Button();
b.Click+=new RoutedEventHandler(delegate(object sender,RoutedEventArgs r){});
谢谢

#8


      MouseButtonEventArgs args = new MouseButtonEventArgs(Mouse.PrimaryDevice,
                            0, MouseButton.Left);
            args.RoutedEvent = Button.ClickEvent;

            button1 .RaiseEvent(args);

#9


      MouseButtonEventArgs args = new MouseButtonEventArgs(Mouse.PrimaryDevice,
                            0, MouseButton.Left);
            args.RoutedEvent = Button.ClickEvent;

            button1 .RaiseEvent(args);


RaiseEvent方法可以触发大部分事件,你自已摸索

#10


好回答,这里的回答,篇篇都是救命的,
对工作帮助很大啊

#1


还有请大神解释下为什么WPF不提供触发各个事件的方法,我想这一定有很深层次的原因

#2


用Click  替代了。 事件分为  冒泡事件与隧道事件

#3



<Button Click="Button_Click"></Button>



Button b=new Button();
b.Click+=new RoutedEventHandler(delegate(object sender,RoutedEventArgs r){});

#4


参考地址
触发事件是有的,只是你不知道

#5


引用 2 楼 duanzi_peng 的回复:
用Click  替代了。 事件分为  冒泡事件与隧道事件
我的意思是触发事件,而不是注册事件

#6


引用 4 楼 wpfLove 的回复:
参考地址
触发事件是有的,只是你不知道

  private void DoButtonClick()
  {
              ButtonAutomationPeer bam = new ButtonAutomationPeer(MyBtn);
              IInvokeProvider iip = bam.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
              iip.Invoke();
  }
这个方法太麻烦,而且不知道在出发哪个事件啊。如果这个按钮注册的双击和单击是不是都会被执行啊

#7


引用 3 楼 sunny906 的回复:

<Button Click="Button_Click"></Button>



Button b=new Button();
b.Click+=new RoutedEventHandler(delegate(object sender,RoutedEventArgs r){});
谢谢

#8


      MouseButtonEventArgs args = new MouseButtonEventArgs(Mouse.PrimaryDevice,
                            0, MouseButton.Left);
            args.RoutedEvent = Button.ClickEvent;

            button1 .RaiseEvent(args);

#9


      MouseButtonEventArgs args = new MouseButtonEventArgs(Mouse.PrimaryDevice,
                            0, MouseButton.Left);
            args.RoutedEvent = Button.ClickEvent;

            button1 .RaiseEvent(args);


RaiseEvent方法可以触发大部分事件,你自已摸索

#10


好回答,这里的回答,篇篇都是救命的,
对工作帮助很大啊