0

我正在尝试将一个非常小的 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 吗?

4

2 回答 2

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.xaml.cs”中名为App_Starup.

现在在解决方案资源管理器中展开“App.xaml”,然后打开“App.xaml.cs”;这是“App.xaml”文件的代码。添加一个名为 的方法App_OnStartup,它将是我们之前附加的事件的目标。它应该看起来像这样:

private void App_OnStartup(object sender, StartupEventArgs e)
{
    //Your code goes here.
}

在此处添加您要运行的任何代码。您显示的任何消息框都MessageBox.Show() 应该正确显示,但我还没有实际测试过。

于 2016-04-14T13:28:01.993 回答
0

我最终选择了一个标准的 Windows 窗体应用程序,然后删除了该窗体。弄清楚如何让 WPF 做到这一点非常耗时、令人沮丧,最终失败了。表格可能不是新的热点,但它确实有效。

于 2016-04-21T16:44:27.190 回答