2013-09-09 3 views
2

Я хочу создать несколько форм, и когда я нажму кнопку «Назад», он вернется в форму1. Я пробовал это C++/CLI - how to open a new form and back, но когда я нажимаю кнопку в форме2, чтобы вернуться к form1, он получает ошибку. "NullReferenceException был Неизвестное"возвращение (назад) формы windows C++

Form1

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { 

      /* Form1::Hide(); 
      Form2^ form2 = gcnew Form2(); 
      form2->ShowDialog();*/ 


      Form2^frm2 = gcnew Form2(); 
      frm2->Show(); 
      this->Hide(); 
     } 

Form2

Form2(System::Windows::Forms::Form^frm1) 
{ 
    otherform = frm1; 
    InitializeComponent(); 

} 

private: System::Windows::Forms::Form^otherform; 

#pragma endregion 
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e 
{ 

this->Hide(); 
otherform->Show(); 
} 
+3

У вас есть конструктор, который принимает форму ссылки. Вы не используете его. Так что, * otherform * все еще nullptr. Kaboom. –

+1

Может быть, вы должны вызвать конструктор 'Form2', не являющийся по умолчанию, следующим образом:' Form2^frm2 = gcnew Form2 (this); ' – sgarizvi

ответ

1

Вы создали второй конструктор Form2, но вы не используете его в button1_Click.

Вместо этого:

Form2^frm2 = gcnew Form2(); 

ли это:

Form2^frm2 = gcnew Form2(this); 
+0

" ошибка C3767: 'Multiple_forms :: Form2 :: Form2': функция-кандидат не доступно " это ошибка, когда я это пробовал. –

+0

Вы определили конструктор 'Form2 (System :: Windows :: Forms :: Form^frm1) как' public'? – sgarizvi

+0

Я объявил его приватным –