我正在使用Visual C ++ 2005,我正在创建一个具有各种表单的应用程序。我想要发生的是当一个新表格被打开时,前一个表格被关闭。我确定这只是我需要添加的一行代码,但对此我是新手,我不知道那是什么。我要关闭的表单是Form1.h。任何帮助将不胜感激。
这是我目前的代码:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Parts ^parts = gcnew Parts();
parts->ShowDialog();
this->Close();
答案 0 :(得分:1)
您只需从要关闭的表单中调用Close()方法即可。 你试过了吗?
答案 1 :(得分:1)
要显示第二个表单(部件),您必须使用显示而不是 ShowDialog 。 ShowDialog会阻止执行,并且在关闭表单部件之前不会调用Close方法。
Parts ^parts = gcnew Parts();
parts->Show(); // Show the form and continue execution
this->Close();
但请记住一件事,如果调用者表单是应用程序的主窗口,当调用方法关闭时,整个应用程序将被关闭,并且随之关闭表单部件将被关闭太。若要解决此问题,我将以不可见的形式启动应用程序。加载该表单后,将启动“调用者”表单。
答案 2 :(得分:0)
我不确定它在C ++中是怎么回事,但在C#中你可以这样做
static Programm
{
static bool run = true;
static int state = 1;
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
while (run)
{
Application.Run(getForm());
}
}
static private Form getForm()
{
Form ret = null;
switch (state)
{
case 1:
ret = new Form1();
break;
case 2:
ret = new Form2();
break;
}
return ret;
}
static public void setState(int i)
{
if (i == 0)
{
run = false;
}
else
{
state = i;
}
}
}
希望这有帮助