我正在尝试将一个非常小的C#控制台应用程序转换为WPF应用程序。它接受一些参数,做一些工作,并可能会调出一个MessageBox。
我正在将它从控制台应用程序移动到WPF,因为它应该运行不可见,除非它有错误消息。
到目前为止,这个故障已经让它显示MessageBox。以下是真正的简短版本,它编译,运行......但不显示MessageBox。
namespace MyApp{
public class EntryPoint {
[STAThread]
public static void Main(string[] args) {
App app = new App();
app.Run();
MessageBox.Show("test", "test", MessageBoxButton.YesNo, MessageBoxImage.Question);
}
}
}
任何人都知道如何在没有主程序窗口的情况下显示那个讨厌的MessageBox?
答案 0 :(得分:0)
您最好的选择可能是尝试在应用程序的Startup
事件中运行代码。请记住,WPF并非真的被设计为以这种方式使用,因此可能存在一些奇怪的怪癖。
首先在解决方案资源管理器中打开“App.xaml”.XAML的根目录应该是这样的:
<Application x:Class="Configurator.Application.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:FoodSafetyConfigurator"
xmlns:s="clr-namespace:Configurator.Application.Properties"
StartupUri="MainForm.xaml">
删除StartupUri="MainForm.xaml"
属性,并将其替换为Startup="App_OnStartup"
。这将阻止WPF默认显示一个窗口,并将启动事件挂钩到名为App_Starup
的“App.xaml.cs”中的方法。
现在在解决方案资源管理器中展开“App.xaml”,然后打开“App.xaml.cs”;这是“App.xaml”的代码隐藏文件。添加一个名为App_OnStartup
的方法,它将成为我们之前附加的事件的目标。看起来应该是这样的:
private void App_OnStartup(object sender, StartupEventArgs e)
{
//Your code goes here.
}
在此处添加您要运行的任何代码。您使用MessageBox.Show()
显示的任何消息框都应正确显示,但我实际上没有对其进行测试。
答案 1 :(得分:0)
我最终选择了标准的Windows Forms应用程序,只是删除了表单。弄清楚如何使WPF做到这一点非常耗时,令人沮丧并最终失败。表格可能不是新的热点,但它有效。