Parameterübergabe an eine Windows Forms Anwendung
-
Hallo,
ich suche ein einfaches Beispiel für Parameter-Übergabe an eine Windows Forms Anwendung. Die Anwendung soll gestartet werden, indem eine Datei per drag-and-drop auf die Anwendung gezogen wird.
Für eine Konsolen-Anwendung ist mir klar wie das geht, siehe unten. Ich suche jetzt das gleiche für eine Windows Forms Anwendung.Gruß
Michaelusing System; using System.IO; namespace Show_Parameters { public class Program { static void Main(string[] args) { if (args.Length == 0) Console.WriteLine("No parameters were passed"); else { Console.WriteLine("These parameters were passed:"); foreach (string s in args) Console.WriteLine(s); } Console.Read(); } } }
-
Environment.GetCommandLineArgs ist vermutlich, das, was du suchst. Es kapselt das, was GetCommandLine bzw. CommandLineToArgv liefert.
-
danke, genau das habe ich gesucht.
Michael
-
Es spielt keinen Unterschied, ob Konsolen- oder WinForms-Anwendung. Bei beiden kannst du
void Main(string[] args)
verwenden.
-
Ich hatte das probiert, aber das ging nicht. Braucht man dafür eine bestimmte using Anweisung?
Michael
-
Für
string
brauchst duusing System;
(aber das sollte schon in der Vorlage vorhanden sein).
Was für eine Fehlermeldung erhältst du denn?
-
Das ursprüngliche Problem habe ich zwar schon mit Environment.GetCommandLineArgs gelöst, aber ich habe jetzt nochmal ein neues Test-Projekt erstellt weil mich der andere Lösungsweg auch interessiert.
In der Datei Program.cs steht zunächststatic void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); }
Das kann ich ändern in
static void Main(string[] args)
Das Problem ist, dass die Variable args an der Stelle wo ich sie abfragen möchte (in Form1.cs in Form1_Shown) nicht bekannt ist.
Michael
-
Ich habe es jetzt herausgefunden wie das geht:
Program.cs
using System; using System.Windows.Forms; namespace test { static class Program { /// <summary> /// Der Haupteinstiegspunkt für die Anwendung. /// </summary> [STAThread] static void Main(string[] args) // Diese Zeile muss modifiziert werden { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(args)); // Diese Zeile muss modifiziert werden } } }
Form1.cs
using System; using System.Windows.Forms; namespace test { public partial class Form1 : Form { string[] arguments; public Form1(string[] args) { InitializeComponent(); arguments = args; } private void Form1_Shown(object sender, EventArgs e) { foreach (string s in arguments) richTextBox1.AppendText(s + "\n"); } } }