#

WPF,C#: Start Argumente übernehmen
 
Aufgabe:
In einer WPF Anwendung sollen beim Start des Programms als Parameter ein Verzeichnis übergeben werden.
Start-Argumente werden in Programmen wie hier übergeben
C:\Programme\Mein_Programm.exe  C:\Daten\Mein_Ordner
 
Lösung:
1. App.xaml mit Startup-Event eintragen
2. App.xaml.cs den Startup_Event ausführen und dabei die Argumente als args einlesen
2. MainWindow.cs: in dem Hauptfenster eine Property eintragen, welche das Startup-Argument übernehmen kann
 
Betrifft: WPF, Start Parameter, Start-Argumente,
 
App.xaml
In der App.xaml wird die Anwendung definiert und der Startvorgang festgelegt.
Im Standard wird dort das Hauptfenster MainWindow.xaml geöffnet durch den Uri Eintrag: StartupUri="MainWindow.xaml"  
Will man aber die Start-Argumente der Anwendung beim Start lesen, dann muss man hier den StartupUri-Eintrag löschen und stattdessen den Event: Startup=“Application_Startup“ eintragen

 
Die App.xaml findet man im Solution Ordner der WPF Anwendung.

 
App.xaml Datei
WPF Code

<Application x:Class="Gruppiere_Verzeichnis.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Gruppiere_Verzeichnis"
Startup="Application_Startup" >
</Application>

 
 
App.xaml.cs
 
In der App.xaml.cs Application Code-Datei wird beschrieben, wie sich die App verhalten soll. Sie ist somit die erste Ausführungsdatei der Anwendung und in dieser Datei wird auch das Startverhalten festgelegt.
In dieser Datei werden die Startparameter als StartupEventArgs aus der Startzeile herausgelesen.
Die Methode: Application_Startup(..) wird eingestellt, indem man in der App.XAML die Startup-Methode als Event einträgt.
C#, WPF
 
Start-Varianten des Programms könnten sein wie hier:
//* myProgram.exe %1
//* myProgram.exe c:\\Data
//* C:\_Daten\Desktop\WPF\Gruppiere_Verzeichnis\Gruppiere_Verzeichnis\bin\Debug\Gruppiere_Verzeichnis.exe %1
//* C:\_Daten\Desktop\WPF\Gruppiere_Verzeichnis\Gruppiere_Verzeichnis\bin\Debug\Gruppiere_Verzeichnis.exe  C:\_Daten\Desktop\Test_Fotos\2016-12-23
 

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
 
namespace Gruppiere_Verzeichnis
{
 
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
//--------< Application_Startup() >--------
String start_Folder = "";
//--< get Start Arguments >--
if (e.Args.Length==1)
{
start_Folder = e.Args[0];
//MessageBox.Show("Startup Argument is: \n\n" + e.Args[0]);
}
//--</ get Start Arguments >--
 
 
// Create main application window, starting minimized if specified
MainWindow mainWindow = new MainWindow();
mainWindow.Startup_Folder_Path = start_Folder;
mainWindow.Show();
//--------</ Application_Startup() >--------
}
}
}
 

 
MainWindow
Wenn man die Startup-Argumente im MainWindow verwenden möchte, dann muss man hierzu erst eine Property erstellen, welche man zur Laufzeit befüllen kann.
Im oberen Beispiel wird der Startparameter wie hier übergeben

MainWindow mainWindow = new MainWindow();
mainWindow.Startup_Folder_Path = start_Folder;
mainWindow.Show();

 
Die MainWindow-Datei übernimmt mit Properties das Startargument

public partial class MainWindow : Window
{
//--< Privat >--
private String sFolder_Path = "";
//--< Privat >-

//--< Properties >--
public string Startup_Folder_Path
{
get
{
return sFolder_Path;
}
 
set
{
sFolder_Path = value;
tbxFolder.Text = sFolder_Path;
}
}
//--</ Properties >--
 
#region ---------< Region: Window >---------
//------< Window >------
public MainWindow()
{
InitializeComponent();
}
//------</ Window >------
#endregion ---------</ Region: Window >---------
 

 
In der Anwendung wird hier als Beispiel der Startparameter in das Textfeld geschrieben, während das MainWindow geöffnet wird.

 
Anwendung im File-Explorer
Starten mit Parametern aus dem Windows Dateiexplorer heraus:
 
In der Registry habe ich in Folder/shell/meinProgramm/command das Programm mit Startparametern eingetragen
C:\_Daten\..\Mein_Programm.exe %1
Dabei übergibt der Parameter %1 den aktuellen Folder als Startargument

 
Wenn man dann mit einem Rechten Mausklick einen Ordner anwählt und das Programm startet, dann wird der Ordner übergeben.

 
Beim Öffnen des MainWindows kann der Parameter angezeigt oder verwendet werden

 
 
Als Video Tutorial:
Mobile

.

0123movie.net