在不创建 gcnew 表单的情况下从父表单转到子表单
Going from a parent form to a child form without creating a gcnew form
您好,我有一个主窗体 (Form1) 和一个子窗体 (Form5)。如果我第一次点击一个按钮,我希望它打开一个新表单。但是,如果第二次单击它,我希望它打开我第一次打开的表单,保存我将填写的表单数据(文本框等)。这就是我所拥有的:
.cpp 文件:
System::Void Form1::button5_Click(System::Object^ sender, System::EventArgs^ e){
formclick++;
if (formclick == 1)
{
Form5 ^dos1 = gcnew Form5(this, MyArray, MyArray1);
dos1->Show();
}
if (formclick==2)
{
otherform->Show();
}
Form1.h 文件:
> Form1(System::Windows::Forms::Form ^ Form5)
> {
>
>
> otherform = Form5;
> InitializeComponent();
> } public: System::Windows::Forms::Form ^ otherform;
但是我得到了错误:
System.Windows.Forms.dll
中发生类型为 'System.NullReferenceException' 的未处理异常
附加信息:未将对象引用设置为对象的实例。
TIA
您将新创建的表单存储在 button5_click 函数的局部范围内(在 dos1
变量中),这意味着当函数存在时它可以自由地从内存中删除。
您给出的代码摘录有点乱,但是您可以将点击功能更改为以下内容:
System::Void Form1::button5_Click(System::Object^ sender, System::EventArgs^ e){
if (!otherForm)
otherForm = gcnew Form5(this, MyArray, MyArray1);
else
otherform->Show();
}
代码未测试,但主要是您需要将新创建的表单存储在 class 成员中,而不仅仅是在本地点击功能!
问候
甚至
您好,我有一个主窗体 (Form1) 和一个子窗体 (Form5)。如果我第一次点击一个按钮,我希望它打开一个新表单。但是,如果第二次单击它,我希望它打开我第一次打开的表单,保存我将填写的表单数据(文本框等)。这就是我所拥有的: .cpp 文件:
System::Void Form1::button5_Click(System::Object^ sender, System::EventArgs^ e){
formclick++;
if (formclick == 1)
{
Form5 ^dos1 = gcnew Form5(this, MyArray, MyArray1);
dos1->Show();
}
if (formclick==2)
{
otherform->Show();
}
Form1.h 文件:
> Form1(System::Windows::Forms::Form ^ Form5)
> {
>
>
> otherform = Form5;
> InitializeComponent();
> } public: System::Windows::Forms::Form ^ otherform;
但是我得到了错误: System.Windows.Forms.dll
中发生类型为 'System.NullReferenceException' 的未处理异常附加信息:未将对象引用设置为对象的实例。
TIA
您将新创建的表单存储在 button5_click 函数的局部范围内(在 dos1
变量中),这意味着当函数存在时它可以自由地从内存中删除。
您给出的代码摘录有点乱,但是您可以将点击功能更改为以下内容:
System::Void Form1::button5_Click(System::Object^ sender, System::EventArgs^ e){
if (!otherForm)
otherForm = gcnew Form5(this, MyArray, MyArray1);
else
otherform->Show();
}
代码未测试,但主要是您需要将新创建的表单存储在 class 成员中,而不仅仅是在本地点击功能!
问候 甚至