Окно сообщения C # минимизировало проблему - PullRequest
1 голос
/ 03 сентября 2011

У меня небольшая проблема с окнами сообщений.Если я запускаю программу напрямую (например, дважды щелкаю по ней и использую ее оттуда), они работают нормально.

У меня есть несколько файлов .ext, которые при двойном щелчке запускаются через программу (они связаны с моей программой).Теперь, когда там проходят окна сообщений, они показываются, но они свернуты, и я должен вручную щелкнуть их на панели задач, чтобы увидеть их.

Кто-нибудь знает, почему это так?У меня есть этот код в моем Program.cs:

static void Main(string[] args)
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    var MyForm = new Form1();
    if (args.Length != 0)
    {
        MyForm.RunMsg(); // this is a function I am calling
        Application.Exit();
    }
    else
        Application.Run(MyForm);
}

Любая помощь будет оценена.И да, я могу подтвердить, что окна сообщений свернуты только при запуске файлов .ext.

Ответы [ 2 ]

2 голосов
/ 03 сентября 2011

Лучшим подходом может быть добавление в форму нового конструктора, который принимает аргумент или аргументы, представляющие значения, передаваемые в командной строке, следующим образом: -

static void Main(string[] args)
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    var parsedArgs = Parse(args);
    Application.Run(new Form1(parsedArgs));
}

Для целейНапример, Parse() - это статический метод, который с учетом аргументов командной строки возвращает какой-то подходящий тип.Если аргументы командной строки не предоставлены, тип возвращаемого значения может быть либо нулевым, либо ненулевым со значениями по умолчанию для его свойств.

Используя этот метод, ваша форма может решить, как действовать соответствующим образом в соответствии саргумент (ы) передается в конструктор, и вы по-прежнему получаете преимущества от установки, срока службы и разрыва, которые Application.Run() делает для вас.

2 голосов
/ 03 сентября 2011

Я очень серьезно сомневаюсь, что они на самом деле минимизированы.Гораздо более вероятно, что они скрыты за окном другого приложения.Да, это вероятно в этом сценарии, потому что вы не создаете окно сразу.Вы, вероятно, какое-то время хрустите переданным файлом, затем пытаетесь сообщить пользователю, что все готово.Слишком поздно, чтобы все еще иметь возможность сосредоточиться, в Windows действуют очень строгие правила, чтобы избежать синдрома «бросить окно в лицо пользователя».Это не просто раздражает, но также может привести к сбою, потому что пользователь может случайно закрыть окно при наведении курсора мыши или на клавиатуре, даже не заметив, что окно было.Если вы случайно запустили установку Центра обновления Windows, то вы понимаете, что я имею в виду (теперь исправлено).

Не используйте окно сообщения.Либо создайте форму прогресса, чтобы вы могли получить фокус и показать прогресс, либо используйте NotifyIcon.

...