使用 "System::Windows::Forms::DialogResult::OK" 返回上一个表格

Using "System::Windows::Forms::DialogResult::OK" to go back to previous form

我有两个单独的表格 list_of_students_page 和测试。

我在 list_of_students_page 中有一个按钮,单击该按钮可打开测试表单。我在测试表单中创建了一个按钮以返回 list_of_students_page。

在运行测试表单中的按钮时,单击两次即可。

我在 Visual Studio.

中使用 C++/CLI Windows 表单

list_of_students_page.h

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

CppCLR_WinformsProjekt1::testing^ testing_f = gcnew CppCLR_WinformsProjekt1::testing;
this->Hide();
testing_f->ShowDialog();
if (testing_f->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
    this->Show();
}
}

testing.h

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
    this->DialogResult = System::Windows::Forms::DialogResult::OK;
    this->Close();
}

为什么会发生这种情况,我该如何解决?

你有:

testing_f->ShowDialog();
if (testing_f->ShowDialog() == System::Windows::Forms::DialogResult::OK)

调用独立的 ShowDialog 并没有真正意义,并且确实解释了为什么你必须点击按钮两次(它实际上是对话框的不同实例,它出现得太快你看不到)。