Как передать аргументы командной строки в приложение WinForms?
У меня есть два разных приложения WinForms, AppA & AppB. Оба работают под управлением .NET 2.0.
в AppA я хочу открыть AppB, но мне нужно передать ему аргументы командной строки. Как я могу использовать аргументы, которые я передаю в командной строке?
Это мой текущий основной метод в AppB, но я не думаю, что вы можете это изменить?
static void main()
{
}
6 ответов:
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();вы, вероятно, можете связать это с использованием перечисление чтобы укрепить использование массива через вашу базу кода.
", и вы можете использовать это в любом месте в вашем приложении, вы не просто ограничено его использование в методе main (), как в консоли приложение."
на:здесь
вы можете захватить командную строку любого приложения .Net, обратившись к среде.Свойство командной строки. Он будет иметь командную строку в виде одной строки, но разбор данных, которые вы ищете, не должен быть ужасно сложным.
наличие пустого метода Main не повлияет на это свойство или способность другой программы добавлять параметр командной строки.
рассмотрим вам нужно разработать программу, через которую вам нужно передать два аргумента. Прежде всего, вам нужно открыть
вы используете эту подпись: (в c#) static void Main (string[] args)
эта статья может помочь объяснить роль основной функции в программировании, а также: http://en.wikipedia.org/wiki/Main_function_ (Программирование)
вот небольшой пример для вас:
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"); } }
это не может быть популярным решением для всех, но мне нравится платформа приложений в Visual Basic, даже при использовании C#.
добавить ссылку
Microsoft.VisualBasicсоздайте класс WindowsFormsApplication
public class WindowsFormsApplication : WindowsFormsApplicationBase { /// <summary> /// Runs the specified mainForm in this application context. /// </summary> /// <param name="mainForm">Form that is run.</param> 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); } /// <summary> /// Runs this.MainForm in this application context. Converts the command /// line arguments correctly for the base this.Run method. /// </summary> /// <param name="commandLineArgs">Command line collection.</param> private void Run(ReadOnlyCollection<string> commandLineArgs) { // convert the Collection<string> 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;
Comments