关于动态生成Form的一个问题
具体代码如下:
Form1:包含控件Button1,程序自动生成并显示
Form2:程序过程中由Form1的button1的click事件触发后动态生成的。
Form2包含一个button2,click event是关闭Form2
现在遇到一个Form2的关闭问题
代码如下:
TForm1::OnButton1Click()
{
if (Form2!=NULL)
{
Form2=new TForm2(this);
//Form2->Visible=true; 第二种方式
//Form2->Show(); 第二种方式
Form2->ShowModal();
Form2=NULL;
}
}
Form1的其他代码部分 //Form2->Close(); 第二种方式
Form2里面的代码:
TForm2::OnButton2Click()
{
//Form2->Close(); 这样调用出错 --方法1
//Close(); //这样就正确 --方法2
//this->Close(); //正确 --方法3
//TCustomForm::Close(); //正确 --方法4
}
我发现一个有趣的现象,当我使用Close关闭Form2时候,用Form2->Close()竟然是错误的
这里的this指针应该就是Form2阿!检查发现这里的Close实际调用的是父类TCustomForm的
函数。我想问的是,这里为什么不能使用Form2->Close();来关闭Form2?
还是如上例子,当我如代码使用第二种方式在Form1里Form2->show,也在Form1里Form2->Close()
就完全没问题!