Как передать аргументы командной строки в приложение WinForms?

У меня есть два разных приложения WinForms, AppA & AppB. Обе версии работают на .NET 2.0.

В AppA я хочу открыть AppB, но мне нужно передать ему аргументы командной строки. Как использовать аргументы, которые я передаю в командной строке?

Это мой текущий основной метод в AppB, но я не думаю, что вы можете это изменить?

static void main() { } 

 static void Main(string[] args) { // For the sake of this example, we're just printing the arguments to the console. for (int i = 0; i < args.Length; i++) { Console.WriteLine("args[{0}] == {1}", i, args[i]); } } 

Затем аргументы будут сохранены в массиве строк args :

 $ AppB.exe firstArg secondArg thirdArg args[0] == firstArg args[1] == secondArg args[2] == thirdArg 

Лучший способ работы с args для вашего приложения winforms – использовать

 string[] args = Environment.GetCommandLineArgs(); 

Вы, вероятно, можете связать это с использованием enum, чтобы упростить использование массива в вашей базе кода.

«И вы можете использовать это в любом месте своего приложения, вы просто не можете использовать его в методе main (), например, в консольном приложении».

Найдено по адресу: ЗДЕСЬ

Вы можете захватить командную строку любого приложения .Net, обратившись к свойству Environment.CommandLine. Он будет иметь командную строку как одну строку, но parsing данных, которые вы ищете, не должен быть ужасно трудным.

Наличие пустого Main метода не повлияет на это свойство или способность другой программы добавить параметр командной строки.

Вы используете эту подпись: (в c #) static void Main (string [] args)

Эта статья также поможет объяснить роль основной функции в программировании: http://en.wikipedia.org/wiki/Main_function_(programming)

Вот вам небольшой пример:

 class Program { static void Main(string[] args) { bool doSomething = false; if (args.Length > 0 && args[0].Equals("doSomething")) doSomething = true; if (doSomething) Console.WriteLine("Commandline parameter called"); } } 

Подумайте, вам нужно разработать программу, через которую вам нужно передать два аргумента. Прежде всего, вам нужно открыть class Program.cs и добавить аргументы в методе Main, как показано ниже, и передать эти аргументы конструктору формы Windows.

 static class Program { [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(args[0], Convert.ToInt32(args[1]))); } } 

В classе формы windows добавьте параметризованный конструктор, который принимает входные значения из classа программы, как показано ниже.

 public Form1(string s, int i) { if (s != null && i > 0) MessageBox.Show(s + " " + i); } 

Чтобы проверить это, вы можете открыть командную строку и перейти в место, где находится этот exe. Укажите имя файла, затем параметр parmeter1. Например, см. Ниже

 C:\MyApplication>Yourexename p10 5 

Из вышеприведенного кода C # он предложит Messagebox со значением p10 5 .

Это не может быть популярным решением для всех, но мне нравится Application Framework в Visual Basic, даже при использовании C #.

Добавить ссылку на Microsoft.VisualBasic

Создайте class под названием WindowsFormsApplication

 public class WindowsFormsApplication : WindowsFormsApplicationBase { ///  /// Runs the specified mainForm in this application context. ///  /// Form that is run. public virtual void Run(Form mainForm) { // set up the main form. this.MainForm = mainForm; // Example code ((Form1)mainForm).FileName = this.CommandLineArgs[0]; // then, run the the main form. this.Run(this.CommandLineArgs); } ///  /// Runs this.MainForm in this application context. Converts the command /// line arguments correctly for the base this.Run method. ///  /// Command line collection. private void Run(ReadOnlyCollection commandLineArgs) { // convert the Collection to string[], so that it can be used // in the Run method. ArrayList list = new ArrayList(commandLineArgs); string[] commandLine = (string[])list.ToArray(typeof(string)); this.Run(commandLine); } } 

Измените свою основную () процедуру, чтобы выглядеть так

 static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var application = new WindowsFormsApplication(); application.Run(new Form1()); } } 

Этот метод предлагает некоторые дополнительные полезные функции (такие как поддержка SplashScreen и некоторые полезные события)

 public event NetworkAvailableEventHandler NetworkAvailabilityChanged;d. public event ShutdownEventHandler Shutdown; public event StartupEventHandler Startup; public event StartupNextInstanceEventHandler StartupNextInstance; public event UnhandledExceptionEventHandler UnhandledException; 
  • Преобразование строки Hex в ASCII в Java
  • Вставка символа в определенном месте в строке
  • Как создать более удобный синтаксис string.format?
  • Как удалить последний символ из строки?
  • Могу ли я умножить строки на Java для повторения последовательностей?
  • Возможны ли параметры в strings.xml?
  • C #: class для декодирования кодировки с кодовым кодированием?
  • как проверить начало строки в C ++
  • Как добавить символ в std :: string?
  • Как преобразовать целое число цвета в шестнадцатеричную строку в Android?
  • Подсчитайте количество строк, появляющихся в строке
  • Давайте будем гением компьютера.