wpf中的button1.PerformClick()

vis*_*020 15 c# wpf

为什么WPF中的代码不起作用?

private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("yes");
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        button1.PerformClick();
    }
Run Code Online (Sandbox Code Playgroud)

我需要命令.

小智 24

要使用Windows窗体应用程序的样式,您需要编写以下扩展方法:

namespace System.Windows.Controls
{
    public static class MyExt
    {
         public static void PerformClick(this Button btn)
         {
             btn.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在你可以将它用于任何按钮,假设一个名为"btnOK"的按钮:

btnOK.PerformClick();
Run Code Online (Sandbox Code Playgroud)


Mus*_*ici 11

等等..有简单的方法.如果您的按钮名称是button1并且button1单击了已订阅的事件,您将只调用该事件

button1_Click(this,null);
Run Code Online (Sandbox Code Playgroud)


par*_*lko 5

而不是PerformClick()使用RaiseEvent()

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("yes");
}
private void Form1_Load(object sender, EventArgs e)
{
    RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);
    button1.RaiseEvent(newEventArgs);         
}
Run Code Online (Sandbox Code Playgroud)


ind*_*ago 5

我认为解决您的问题的最短且最有效的解决方案只需一行即可完成。

button1.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
Run Code Online (Sandbox Code Playgroud)

这应该适用于 WPF C#


Col*_*inE 0

因为 PerformClick 是 WindowsForms Button 控件上的一个方法:

http://msdn.microsoft.com/en-us/library/system.windows.forms.button.performclick.aspx

不在 WPF Button 控件上:

http://msdn.microsoft.com/en-us/library/system.windows.controls.button_methods.aspx

要自动单击按钮,您可能需要查看 UI 自动化框架:

http://msdn.microsoft.com/en-us/library/ms747327.aspx