0

非常に小さな C# コンソール アプリケーションを WPF アプリケーションに変換しようとしています。いくつかのパラメーターを受け取り、いくつかの作業を行い、MessageBox を表示する場合があります。

エラーメッセージがない限り、非表示で実行する必要があるため、コンソールアプリからWPFに移動しています。

これまでの問題は、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

標準の Windows フォーム アプリケーションを使用することになり、フォームを削除しました。WPF でこれを行う方法を考え出すのは、時間がかかり、イライラし、最終的には失敗に終わりました。フォームは新しい話題ではないかもしれませんが、機能します。

于 2016-04-21T16:44:27.190 に答える
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 に答える