Проблема Windows формы - PullRequest
       6

Проблема Windows формы

0 голосов
/ 31 августа 2011

когда я создаю приложение с использованием формы XI: X->Show(); Приложение закрывается немедленно.Поэтому я использую метод X->ShowDialog();.Теперь пользовательский интерфейс перестает выполнять что-либо после этой строки.Окна сообщений будут отображаться только после того, как я закрою форму X, обновления и изменения текстовых полей ни к чему не приведут ... ???Как избавиться от этой проблемы?Я только хочу показать форму и изменить ее содержимое при взаимодействии с пользователем, и пользователь должен закрыть ее (не программу) ... разве это не должно быть самой легкой вещью во всем мире, когда я программирую программы для WindowsВинда с виндовыми формами?LOL!

int main(array<System::String ^> ^args)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);

    Form1^ X = gcnew Form1();

    X->ShowDialog();
    MessageBox::Show("test", "Warning", MessageBoxButtons::OK);
    // message box not shown, only after closing the form...
    return 0;
}

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

Не уверен насчет c ++ - cli прямо сейчас, но в C # основная форма запускается и отображается следующим образом:

static void Main()
{
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new Form1());
}

так что я могу ошибаться, но где ваш Application.Run?

0 голосов
/ 02 сентября 2011

То, что вы пытаетесь сделать, нелогично.Вы можете либо ShowDialog (), который поддерживает вашу программу, пока форма не будет закрыта, или , вы можете продолжать проходить программу и немедленно выйти из нее.Где вы ожидаете, что ваша программа остановится?И когда вы ожидаете, что он закроется?

Самое простое «решение» для отображения обоих на экране - это изменить порядок на:

MessageBox::Show("test", "Warning", MessageBoxButtons::OK);
X->ShowDialog();

, тогда вы получите оба на экране,В противном случае запустите MessageBox из формы (в конструкторе OnLoad, где угодно).

...