所以我在一个按钮内部有一个函数,我想在应用程序启动时立即触发,我这样做:
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)
{
...
}
感谢。
答案 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
}