C++/CLI - 如何打开新表单并返回

2023-12-11

我正在创建一个应用程序,其中前端必须是使用 C++/CLI 的 Windows 窗体。该表格用于登录目的。

在我的表单中,我有一个注册按钮。单击此按钮后,应打开一个新表单(关闭登录表单)。我能够通过以下代码实现这一目标:

Form^ rgForm = gcnew RegisterForm;
rgForm->Show();
this->Hide(); // using this->Close() was closing the application

现在我想在注册表单上有一个取消按钮,单击该按钮应再次打开登录表单并关闭注册表单。我该如何实现这一目标?

(我对 this->Hide() 的使用感到困惑,这是否意味着表单存在,我们只是没有显示它,所以即使在注册表单可见之后,登录表单仍然存在?)

更新:现在当前表单句柄被传递到寄存器表单构造函数中(将其存储为 RegisterForm 类中名为 loginForm 的私有变量)。

以下是取消按钮点击的代码:

// RegisterForm class constructor

RegisterForm(System::Windows::Forms::Form^ f)
{
    loginForm = f;
}

// Cancel button click

private: System::Void BtnCancel_Click(System::Object^  sender, System::EventArgs^  e) 
{
     loginForm->Show();
     this->Hide();
}

单击取消按钮时出现异常:“对象未设置为实例”。

有人可以帮帮我吗。

Thanks.


创建一个构造函数RegisterForm它接受一个System::Windows::Form ^对象,并传递this当您从登录表单类中实例化它时

Form^ rgForm = gcnew RegisterForm(this);
rgForm->Show();
this->Hide();

假设调用登录表单对象otherform在 RegisterForm 类中。一旦您准备好取回,只需致电otherform->Show()

当您隐藏表单时,它仍然存在,只是用户看不到它。

EDIT:我让这个工作得很好。这是我对表单所做的修改(不是完整的代码)

表2(登记表)

Form2(System::Windows::Forms::Form ^ frm1)
    {
        otherform = frm1;
        InitializeComponent();

    }

private: System::Windows::Forms::Form ^ otherform;

private: System::Void Cancel_Click(System::Object^  sender, System::EventArgs^  e) {
             this->Hide();
             otherform->Show();

}

表格1(登录表格)

#include "Form2.h"

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

             Form2 ^ frm2 = gcnew Form2(this);
             frm2->Show();
             this->Hide();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++/CLI - 如何打开新表单并返回 的相关文章

  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • 重写某些 .Net Framework 控件的绘制以更改其边框颜色?

    SCENARIO 我正在使用第三方 Windows 视觉主题 当我看到我的应用程序时 它看起来像这样 但是当我使用正常的Aero主题 它看起来到处都有可怕的白色边框 QUESTION 我知道应用程序中使用的配色方案取决于视觉风格 但是 我可
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 如果我使用客户端计算机上未安装的字体,会发生什么情况?

    有人可以告诉我 如果我在 WinForms 应用程序中使用目标计算机上不可用的字体 会发生什么情况 它是否使用同一系列的字体 只是 Sans Serif 还是其他字体 您的应用程序将回退到 Segoe UI Tahoma 然后是 MS Sa
  • 在 C++/CLI 中传递非托管指针

    我正在创建一个依赖于众多 C 静态库的 C CLI 包装器 DLL 一些函数调用需要传入非托管指针 我如何正确地传递它们 此外 其他函数期望 this 指针 作为 void 传入 传递 这个 的正确方法是什么 这是我的班级定义 public
  • 从 winforms picturebox 中的 url 加载的图像是否存储在缓存中?

    在 winform 应用程序的表单中 我必须显示存储在网络服务器上的图像 多个图像 显示图像没有问题 因为我可以简单地将 URL 分配给图片框 picturebox1 ImageLocation http example com Image
  • 显示我的 C# Windows 窗体时关闭“拖动时显示窗口内容”设置

    有一个窗口显示设置称为 拖动时显示窗口内容 http www thewindowsclub com disable show windows contents while dragging http www thewindowsclub c
  • Winforms 多线程:每次在 UI 线程上调用方法时是否需要创建一个新的委托?

    我想调用一个在 UI 线程上操作控件的方法 我的代码可以运行并且我想优化 我指的是这个MSDN 上的资源 http msdn microsoft com en us library 757y83z4 28VS 71 29 aspx 根据那里
  • 我正在为 cmd 编写包装器,但在重定向标准输入时遇到问题

    好的 这就是我正在做的 我想编写一个 net 应用程序 将标准输出 输入重定向到 Richtextbox 我已经让它工作得很好 但是一旦我将标准输入添加到混合中 我的读取命令就会冻结 这是我的表单中的相关代码 Shell new Proce
  • Flowlayout 面板和自动调整子控件大小不起作用

    我试图在 winform C NET 上获得一个非常简单的自动调整大小布局 我尝试过 TableLayoutPanels 和 FlowLayoutPanels 但没有任何效果 我有一个用户控件 它是在运行时创建的其他用户控件的容器 我将其称
  • 为什么在删除 DataGridView 控件中的行时出现此错误?

    为什么在删除 DataGridView 控件中的行时出现此错误 我该如何解决这个问题 Rows cannot be programmatically removed unless the DataGridView is data bound
  • PictureBox 缩放和鼠标滚轮滚动 C#

    我正在尝试创建 pictureBox 用它可以放大 缩小光标 就像谷歌地图一样 一些代码 int viewRectWidth int viewRectHeight public float zoomshift 0 05f int xForS
  • 如何添加新的进度条来显示总体下载?

    代码正在运行 但是 现在我显示每个文件的下载进度progressBar1 但我想添加到设计器 已经添加 progressBar2显示总体下载进度 我如何计算并显示它progressBar2 using System using System
  • 带有单选框和复选框的 WinForms TreeView

    我有一个情况 我希望 TreeView 能够在多个根节点上显示单选按钮 并在其子节点上显示复选框 任何根节点下都只有一层子节点 无线电也应该表现得像一个组 即选择一个根并取消选择其他无线电 我一直试图用图像来伪造它 但它看起来不现实 我最初
  • 将 WinForms ListBox 绑定到对象属性

    我第一次做一些 WinForms 编码 并尝试使用数据绑定 我有一个列表框 我将其绑定到控制器对象中的字符串数组 并且我还想将列表框中的 SelectedItem 绑定到控制器上的另一个字符串属性 以便我可以跟踪它 listBox Data
  • 更改 Json 中属性的键

    这些天我正在尝试制作一个 json 编辑器 与树视图一起使用 我确实更改了值函数 我也可以更改一些键 但我无法在对象中设置键 我可以设置值 SetValue ref JObject main JToken token JToken newV

随机推荐