none
Main-Methode unter WPF RRS feed

  • Frage

  • Hallo,

    ich möchte einem Programm ein Startargument mitgeben. Wenn ich aber versuche, dazu die Main-Methode zu erstellen, meldet VS, dass diese schon in App.g.cs vorhanden sei. Die Datei wird aber vom VS automatisch generiert.
    Wie kann ich in einem WPF-Projekt eine eigene Main-Methode erstellen oder die vorhandene abändern?

    MfG
    tuxdroid

    PS: Google sagt mir, ich solle die App.xaml löschen, eine neue App.cs erstellen und mir darin quasi Main und die in der alten App.cs vorhandenen Anweisungen zusammenbasteln.
    Mittwoch, 30. Dezember 2009 19:38

Antworten

  • also ich habs so geschafft...
    In der App.xaml
    Bzw App.xaml.cs
    <Application x:Class="xxx"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Startup="Application_Startup">
    .
    .
    .
            [STAThread]
            private void Application_Startup(object sender, StartupEventArgs e)
            {
    
                // e.Args = string[] mit argumenten
    
                Window1 wnd = new Window1();
                wnd.ShowDialog();
    
            }
    Ich hoffe das hilft dir...
    • Als Antwort markiert tuxdroid Donnerstag, 31. Dezember 2009 13:05
    Donnerstag, 31. Dezember 2009 12:04
  • Hi tuxdroid,

    alternativ zu Oberoths Beispiel kannst Du auch jederzeit innerhalb Deiner Anwendung die CommandLineArgs auslesen:

    //CommandLine ermitteln, hier z.B. in eine List überführen
    List<string> lststrCommandLineArgs = System.Environment.GetCommandLineArgs().ToList();
    //Das erste Argument (= die EXE selbst) entfernen
    lststrCommandLineArgs.RemoveAt(0);
    //Iterieren
    foreach (string strArg in lststrCommandLineArgs)
    {
       MessageBox.Show(strArg);
    }
    

    Was auf Application bezogene EventHandler anbelangt, so kannst Du diese grundsätzlich in App.xaml anlegen, indem Du im Kopfbereich einen Handler für den jew. Event (also z.B. Startup=>Application_Startup oder SessionEnding=>Application_SessionEnding) anlegst; dafür steht Dir dort übrigens auch IntelliSense zur Seite.
    Cheers,
    Olaf
    • Als Antwort markiert tuxdroid Donnerstag, 31. Dezember 2009 13:04
    Donnerstag, 31. Dezember 2009 12:58

Alle Antworten

  • also ich habs so geschafft...
    In der App.xaml
    Bzw App.xaml.cs
    <Application x:Class="xxx"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Startup="Application_Startup">
    .
    .
    .
            [STAThread]
            private void Application_Startup(object sender, StartupEventArgs e)
            {
    
                // e.Args = string[] mit argumenten
    
                Window1 wnd = new Window1();
                wnd.ShowDialog();
    
            }
    Ich hoffe das hilft dir...
    • Als Antwort markiert tuxdroid Donnerstag, 31. Dezember 2009 13:05
    Donnerstag, 31. Dezember 2009 12:04
  • Hi tuxdroid,

    alternativ zu Oberoths Beispiel kannst Du auch jederzeit innerhalb Deiner Anwendung die CommandLineArgs auslesen:

    //CommandLine ermitteln, hier z.B. in eine List überführen
    List<string> lststrCommandLineArgs = System.Environment.GetCommandLineArgs().ToList();
    //Das erste Argument (= die EXE selbst) entfernen
    lststrCommandLineArgs.RemoveAt(0);
    //Iterieren
    foreach (string strArg in lststrCommandLineArgs)
    {
       MessageBox.Show(strArg);
    }
    

    Was auf Application bezogene EventHandler anbelangt, so kannst Du diese grundsätzlich in App.xaml anlegen, indem Du im Kopfbereich einen Handler für den jew. Event (also z.B. Startup=>Application_Startup oder SessionEnding=>Application_SessionEnding) anlegst; dafür steht Dir dort übrigens auch IntelliSense zur Seite.
    Cheers,
    Olaf
    • Als Antwort markiert tuxdroid Donnerstag, 31. Dezember 2009 13:04
    Donnerstag, 31. Dezember 2009 12:58
  • Danke, ihr Beiden. Das war genau was ich gesucht hatte.
    Donnerstag, 31. Dezember 2009 13:06