2016-04-11 5 views
0

Я пытаюсь преобразовать очень небольшое консольное приложение C# в приложение WPF. Он принимает некоторые параметры, выполняет некоторые работы и может вызвать MessageBox.WPF WindowLess 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

'app.Run' не будет завершен, пока программа не выйдет, поэтому вызов' MessageBox' не будет выполнен, как вы ожидаете. Вам придется переместить 'MessageBox' где-нибудь еще в вашем коде. Мы не можем быть более конкретными, потому что вы не показали нам никакого другого кода. –

+0

Это буквально все, что есть. Я совершенно не знаком с WPF и не знаю, как создать приложение без окон. – ltwally

+0

Вы можете поместить весь свой код в событие запуска приложения в app.xaml и избавиться от всех форм. –

ответ

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()должны отображаться правильно, но я его не протестировал.

+0

Прошу прощения ... но это действительно мое первое приложение WPF. И я не знаю, где поставить функцию, описанную в файле App.xaml.cs. – ltwally

+0

Любое место в классе –

+0

Итак, вы имеете в виду это, чтобы заменить Main()? – ltwally

0

Я закончил работу со стандартным приложением Windows Forms и просто удалил форму. Выяснение того, как сделать WPF, требует много времени, разочарования и, в конечном счете, неудачи. Формы могут быть не новой жаркой, но она работает.