2011-08-31 5 views
0

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

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; 
} 
+0

X-> Показать() недопустимый синтаксис для класса формы с именем X. Почтовый код, который воспроизводит эту проблему. –

+0

push ... 7 миллиардов людей на Земле, зная Windows, и никто не может ответить на простые вопросы. И я не могу сделать это в своем собственном ... иначе я бы не спросил lol – hmm

+1

Решите, хотите ли вы 'main' продолжить (с помощью MessageBox и затем выйти из программы) или вы хотите чтобы программа продолжалась до тех пор, пока форма не выйдет? У вас не может быть обоих. –

ответ

3

Не уверен C++ - кли прямо сейчас, но в C# запускается основная форма и показана на этом пути:

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

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

+1

Правильно, необходим цикл сообщений, а 'Application :: Run' - это стандартный цикл сообщений WinForms. –

+0

Message Loop .... Мне не хватает хороших старых времен программирования VC++ windows ... :) –

+0

С этим контуром сообщения у меня тот же результат. Мое окно сообщения не отображается, пока я не закрою форму. Я не хочу ее закрывать. Я хочу видеть окно сообщения над формой. – hmm

0

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

Самое простое «решение», чтобы получить как на экране, чтобы изменить порядок, чтобы:

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

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

Смежные вопросы