2016-04-09 9 views
2

Hallo, ich habe ein Problem mit WPF (C#) -Projekt. dies ist meine QuelleRun-Programm nach WPF Windows Form erscheint

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      MessageBox.Show("Test"); 
     } 
    } 
} 

ich will mein Programm

MessageBox.Show("Test"); 

nach Windows Form erscheint ... aber in diesem Code auszuführen, wenn ich das Programm zu starten, nur erster Show-Test in Meldungsfeld und nach Das Windows-Formular erscheint! Was soll ich mit dem ersten Windows-Formular tun und danach ein Meldungsfeld öffnen, um den (Test) anzuzeigen? Ich bin mit Visual Studio 2015 (WPF) Projekt

Antwort

2

Sie sollten Ihren Code in das Window_Load Ereignis schreiben:

public MainWindow() 
{ 
    InitializeComponent(); 
    Loaded += MainWindow_Loaded; 
} 

void MainWindow_Loaded(object sender, RoutedEventArgs e) 
{ 
    MessageBox.Show("Test"); 
} 

EDIT: mit längeren Operationen arbeiten (eine Funktion mit mehr als 10 verwendet Funktion innerhalb, wie man wollte) könnten Sie ThreadPool wie folgt verwenden:

void MainWindow_Loaded(object sender, RoutedEventArgs e) 
{ 
    ThreadPool.QueueUserWorkItem(_ => 
    { 
     //Longer Process (//set the operation in another thread so that the UI thread is kept responding) 
     Dispatcher.BeginInvoke(new Action(() => 
     {      
      //use the Dispatcher to "return" to the UI thread 
      //To change the UI elements like label you should put them here like : label1.Text = ""; 
     })); 
    }); 
} 
+0

Dank. das hat funktioniert, aber ist es anders? Ich kann diese Aktion nicht verstehen! (dieser Code)! ! – MyJustWorking

+1

@MyJustWorking ... Es wartet nur auf ein Ereignis auftreten. Jedes Mal, wenn Sie einen langen Prozess haben, können Sie es in 'Dispatcher.BeginInvoke' setzen und während dieses langen Prozesses ist Ihre Benutzeroberfläche immer noch verantwortlich. –

+0

Es gibt ein anderes Problem ... wenn mein Programm mit diesem Code startet, dreht sich mein Mauszeiger und ich kann keine anderen Windows Formular Aktionen verwenden, bis der Prozess abgeschlossen ist ... gibt es einen Weg dies zu lösen? – MyJustWorking