如何使用按钮在窗体之间导航

How to Navigate between Forms using Buttons?

本文关键字:之间 导航 窗体 何使用 按钮      更新时间:2023-10-16

我正在尝试创建一个简单的记录存储应用程序,但由于一些愚蠢的原因,c++拒绝让我在添加记录后导航回默认的frmview.h表单。

这是我要执行的代码:

System::Windows::Forms::DialogResult Result = MessageBox::Show(this,String::Format("Record Added for user {0}, Add another?", txtstaffname),"title", MessageBoxButtons::YesNo, MessageBoxIcon::Information);
    if(System::Windows::Forms::DialogResult::Yes == Result)
        {
            //Do something
        }
            else
                {
                    this->Close;
                    frmview::Show;
                }

当我尝试执行调试器时,我得到以下异常:

11  IntelliSense: a pointer-to-member is not valid for a managed class  $PROJECTDIR$frmnew.h   444 12  Application1

现在,我想回到的形式是视图记录形式,也用于去当前的添加记录(frmnewh)形式,我已经在两个形式上包括以下标题:

frmview.h (View Records):

#include "frmadd.h"
#include "frmedit.h"

frmad .h (Add Records):

#include "frmview.h"

我的电脑系统运行的是Windows 8.1,我安装了Visual Studio 2012。NET 4.5)

如果由我来决定,我会用c#或VB。. NET,但是作为作业的一部分,我们必须使用c++。

我想你是有问题的双包含。你包括"frmad .h",它将包括"frmview.h",以此类推。

如果您需要将一些数据从第二个表单保存到第一个表单,您可以使用property并安全地浏览表单。希望对你有帮助。

p。:我认为Show方法需要括号:Show() .

没有看到更多的代码来确定问题,我不得不假设很多,因此多解决方案的答案:

如果多重包含是问题,那么一个预处理器指令只定义/包含如果以前没有包含应该解决问题:将.h文件中的全部内容包装在

#pragma once
#ifndef HEADERFILENAMEHERE_H
#define HEADERFILENAMEHERE_H
//.....
original header file contents here
//.....
#endif

但是根据你输出的错误,我认为你使用的语法是错误的:看起来你需要调用

frmview->Show(this);

代替

frmview::Show;

另一种可能性是,您可能需要重构代码,使其与以下内容更加内联:

//SecondForm.cpp
#include "StdAfx.h"
#include "FirstForm.h"
#include "SecondForm.h"
System::Void CppWinform::SecondForm::button1_Click(System::Object^  sender, System::EventArgs^  e)
{
 FirstForm^ firstForm = gcnew FirstForm();
 firstForm->Show();
 this->Hide();
}
System::Void CppWinform::FirstForm::button1_Click(System::Object^  sender, System::EventArgs^  e) {
 SecondForm^ secondForm = gcnew SecondForm();
 secondForm->Show();
 this->Hide();               
}

让我知道你的进展如何,如果你需要更多的信息,我很乐意帮助:)