如何使用按钮在表单之间导航?

时间:2014-03-27 16:41:22

标签: c++ winforms visual-studio-2012 managed openform

我正在尝试创建一个简单的记录存储应用程序,但由于一些愚蠢的原因,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

现在我要回到的表单是View Records Form,它也用于获取当前的Add Records(frmnew.h)表单,我在两个表单中都包含以下标题:

frmview.h(查看记录):

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

frmadd.h(添加记录):

#include "frmview.h"

我的计算机系统运行的是Windows 8.1,我安装了Visual Studio 2012(.NET 4.5)

如果由我自己决定使用C#或VB.NET,但作为我们任务的一部分,我们必须使用C ++。

任何帮助都会很棒,谢谢。

2 个答案:

答案 0 :(得分:0)

我认为你遇到了双重包含的问题。 你要包括“frmadd.h”,其中包括“frmview.h”等等。

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

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

答案 1 :(得分:0)

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

如果存在多个包含问题,那么仅在以前未包含的情况下定义/包含的预处理器指令应解决问题: 将整个内容包装在

中的.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();               
}

让我知道你是如何继续下去的,如果你需要更多信息,我将很乐意提供帮助:)