2012-03-07 2 views
0

Я работаю простой форме, я провожу больше, чем за день, чтобы узнать что-тоЧто такое функция DialogResult visual C++ 2010?

Что я хочу, это нажать кнопку в форме1, а затем открыть форму2. У меня есть следующий код:

private: System::Void MyAdd_Click(System::Object^ sender, System::EventArgs^ e) { 
     Form2^ myForm2 = gcnew Form2(); 

    } 
}; 

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

private: System::Void MyAdd_Click(System::Object^ sender, System::EventArgs^ e) { 
     Form2^ myForm2 = gcnew Form2(); 
     if (myForm2->ShowDialog()==System::Windows::Forms::DialogResult::OK) {} 
    } 
}; 

Мой вопрос в том, что я уже создал форму в обоих случаях, почему оператор IF делает разницу?

ответ

2

В этом случае это не имеет никакого значения, поскольку ничего лишнего не сделано. Тем не менее, общее использование является like so:

void ShowMyDialogBox() 
{ 
    Form2^ testDialog = gcnew Form2; 

    // Show testDialog as a modal dialog and determine if DialogResult = OK. 
    if (testDialog->ShowDialog(this) == ::DialogResult::OK) 
    { 

     // Read the contents of testDialog's TextBox. 
     this->txtResult->Text = testDialog->TextBox1->Text; 
    } 
    else 
    { 
     this->txtResult->Text = "Cancelled"; 
    } 

    delete testDialog; 
} 

Проверка return value позволяет увидеть, как диалоговое окно закрыто.

Если вы спрашиваете, почему вам нужно позвонить ShowDialog, это потому, что, хотя вы создали свою форму, вы еще не сказали системе, чтобы показать ее. Обратите внимание, что ShowDialog блокирует/не возвращается, пока диалоговое окно не будет закрыто.

+0

Я даю вам LIKE :) – Marco

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