按钮单击“应用程序启动”

时间:2016-06-24 16:30:51

标签: c# wpf

所以我在一个按钮内部有一个函数,我想在应用程序启动时立即触发,我这样做:

public partial class App : Application
{
    private void App_OnStartup(object sender, StartupEventArgs e)
    {

//get button reference

        Button btn = ((MainWindow)Current.MainWindow).btnJSON;

//programmatically simulate button click

        ButtonAutomationPeer peer =
          new ButtonAutomationPeer(btn);
        IInvokeProvider invokeProv =
          peer.GetPattern(PatternInterface.Invoke)
          as IInvokeProvider;
        invokeProv.Invoke();
    }
}

然而,这导致nullReferenceExeption。我如何实现这一点,即在App stratup上调用功能或模拟按钮点击?

这是按钮签名:

public void btnJSON_Click(object sender, RoutedEventArgs e)
{
     ...
} 

感谢。

2 个答案:

答案 0 :(得分:5)

不要试图调用按钮单击,只需调用按钮单击调用的方法。

public partial class App : Application
{
    private void App_OnStartup(object sender, StartupEventArgs e)
    {
        ((MainWindow)Current.MainWindow).DoStuff();
    }
}

在MainWindow.xaml.cs中:

public void DoStuff()
{
    // TODO: Do Stuff
}

让你的按钮点击处理程序调用该方法。

public void btnJSON_Click(object sender, RoutedEventArgs e)
{
     DoStuff();
} 

答案 1 :(得分:2)

如果您想要的只是运行一些代码,请不要单击按钮。如果按钮的单击处理程序如下所示:

public void btnJSON_Click(object sender, RoutedEventArgs e)
{
     DoSomeInterestingStuff();
} 

然后从您的启动方法中调用该方法:

private void App_OnStartup(object sender, StartupEventArgs e)
{
    DoSomeInterestingStuff();
    // other stuff to do here
}