首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF WindowLess MessageBox

WPF WindowLess MessageBox
EN

Stack Overflow用户
提问于 2016-04-12 03:22:12
回答 2查看 198关注 0票数 0

我正在尝试将一个非常小的C#控制台应用程序转换为WPF应用程序。它接受一些参数,做一些工作,可能会产生一个MessageBox。

我将它从控制台应用程序转移到WPF,因为它应该是不可见的,除非它有错误消息。

到目前为止,问题一直是让它展示MessageBox。以下是非常简短的版本,它编译、运行……但不显示MessageBox。

代码语言:javascript
复制
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吗?

EN

回答 2

Stack Overflow用户

发布于 2016-04-14 21:28:02

最好的办法可能是尝试在应用程序的Startup事件中运行代码。请记住,WPF实际上并不是被设计成这样使用的,所以可能会有一些奇怪的怪癖。

首先在解决方案资源管理器中打开"App.xaml`。XAML的根应该如下所示:

代码语言:javascript
复制
<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的方法,它将是我们前面附加的事件的目标。它应该看起来像这样:

代码语言:javascript
复制
private void App_OnStartup(object sender, StartupEventArgs e)
{
    //Your code goes here.
}

在这里添加你想要运行的任何代码。您使用MessageBox.Show()显示的任何消息框都应该可以正确显示,但我还没有实际测试过它。

票数 0
EN

Stack Overflow用户

发布于 2016-04-22 00:44:27

我最终使用了一个标准的Windows窗体应用程序,并删除了该窗体。弄清楚如何让WPF做到这一点是耗时的,令人沮丧的,最终是失败的。表单可能不是新的热门,但它是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36557462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档