C# добавление аргументов консоли в приложение WinForms

У меня есть приложение Winforms, Я пытаюсь сделать так, чтобы вы могли запускать определенные методы через командную строку, не отображая форму.

Он работает с аргументами командной строки, но теперь он не открывает форму без аргументов ..

вот мой главный

static void Main(String[] args)
    {
        Form1 f = new Form1();
        if (args.Length > 0)
        {
            if (args[0] == "/s")
            {
                MessageBox.Show("Prepping Backup");
                Backup();
            }
        }
        else
        {
            try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Logevent(e.ToString(), "warn", 25);
            }
        }

    }

что идет не так?

pm100 27.03.2018 18:50

У вас есть args.Length> 0, где первый аргумент не "/ s"?

Joel Coehoorn 27.03.2018 18:51

Вы можете попробовать добавить params перед String[] args

Turner Bass 27.03.2018 18:51

Вы создаете свою форму дважды; удалите первый Form1 f = new Form1();.

Dour High Arch 27.03.2018 18:52

Что же делает отладчик, когда вы выполняете код?

LarsTech 27.03.2018 18:52

@DourHighArch Это исправило! добавьте в качестве ответа, чтобы я мог его принять!

Ezekiel Hammond 27.03.2018 18:56

Просто удалите вопрос; это локальная опечатка, которая никому не пригодится.

Dour High Arch 27.03.2018 18:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
78
1

Ответы 1

Application.SetCompatibleTextRenderingDefault(false);

необходимо вызвать перед созданием первого экземпляра формы. Поместите это перед

Form1 f = new Form1(); 

и он будет работать как положено.

Редактировать Это создаст ненужный экземпляр формы, поэтому другой вариант - удалить Form1 f = new Form1(); полностью

Пожалуйста, укажите причину, прежде чем пометить ее как бесполезную. Не дай мне упустить шанс научиться.

kay 27.03.2018 19:00

Это не сработает, потому что позже он создает еще один new Form и игнорирует первый; ему нужно полностью удалить Form1 f = new Form1();.

Dour High Arch 27.03.2018 19:01

Значит, вы имеете в виду, что у вас не может быть 2 экземпляра формы одновременно? До тех пор, пока он не планирует использовать только один экземпляр и не путается между двумя экземплярами, вы правы.

kay 27.03.2018 19:02

Вы можете, но он вообще не использует форму f. Он также создает его перед проверкой аргументов, которые ему нужно сделать в первую очередь.

Dour High Arch 27.03.2018 19:04

Обратитесь к этому: social.msdn.microsoft.com/Forums/windows/en-US/…

kay 27.03.2018 19:05

Я согласен, что он не использует первый экземпляр, но причина его работы - та, которую я упомянул в ответе. Мы оба правы, ведь всегда есть несколько способов решить проблему.

kay 27.03.2018 19:06

Нет, ваш ответ не «правильный». Если есть аргументы, OP не хочет иметь форму. Ваше решение по-прежнему создает его без необходимости, даже если оно этого не показывает. Вы должны исправить свой ответ.

LarsTech 27.03.2018 19:08

Другие вопросы по теме