You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击按钮时如何关闭C++ VCL Form1并打开Form3?

解决点击按钮关闭Form1并打开Form3的问题

你当前代码的问题在于:

  • TForm1 *CurrentForm = new TForm1(this); 创建了一个全新的Form1实例,并非用户正在操作的那个窗口
  • 调用CurrentForm->Close()只是关闭了这个刚创建的空窗口,对原本显示的Form1完全没有作用

正确修改方案

直接通过this指针操作当前Form1实例(当前函数是TForm1的成员方法,this指向当前运行的Form1窗口),同时确保包含Form3的头文件:

#include "Welcome.h"
#include "Login.h"
#include "Form3.h" // 必须添加Form3的头文件引用

void __fastcall TForm1::LoginButtonClick(TObject *Sender)
{
    // 关闭当前Form1窗口
    this->Close();
    // 创建并显示Form3
    TForm3 *NewForm = new TForm3(this);
    NewForm->Show();
}

额外注意事项

如果Form1是程序的主窗口,直接关闭它会导致整个程序退出(VCL程序默认主窗口关闭时终止程序)。这种情况下需要先设置Form3为新的主窗口,再关闭Form1:

void __fastcall TForm1::LoginButtonClick(TObject *Sender)
{
    TForm3 *NewForm = new TForm3(this);
    NewForm->Show();
    // 将Form3设置为程序主窗口,避免关闭Form1时程序退出
    Application->MainForm = NewForm;
    this->Close();
}

内容的提问来源于stack exchange,提问作者Angelina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 23:53:11