C ++ - 如何将变量从一个表单传递到另一个表单?

时间:2013-03-30 02:36:55

标签: c++ windows forms

我有一个Form1.h和一个Form2.h

Form1.h已经包含Form2.h,因为我通过单击Form1中的按钮启动Form2。那么我如何将Form1.h中的变量传递给Form2.h

以下是Form1.h

的示例
#include "Form2.h"

String^ str = "Hello World"; //This variable needs to be passed to Form2.h

//Other windows forms application code here

Form2.h的一个例子

//#include "Form1.h" this will cause an error

//How would i pass variable str to here?

//Other windows forms application code here

编辑:

这就是我修复它的方式

这是我修复它的方式。

Form1.h

#include "Form1.h"

Form2^ frm = gcnew Form2;
frm->Username = "text here";//This passes the variables.
frm->Password = "other text";

Form2.h

public: String^ Username;
public: String^ Password;

3 个答案:

答案 0 :(得分:1)

不完全确定您的要求,但我假设您要在 Form1 类中设置 Form2 类中的变量?如果是这样的话:

class Form1{
  private:
    int data;
  public:
    Form1(){data=4;}
    int getData(){return data;}  //returns Form1 data variable
    void setForm2Data(Form2&);   //sets Form2 data
};

class Form2{
  private:
    int data;
  public:
    void setData(int inData){data = inData;}
};

void Form1::setForm2Data(Form2 &o){
  o->setData(getData());  //argument is a Form2 object, "setData" can set that objects data variable
}

答案 1 :(得分:0)

由于预处理程序指令导致双重包含,因此出现错误。 为避免这种情况,您可以使用pragma guards

Form1.h:

#ifndef FORM1_H
   #define FORM1_H
   #include "Form2.h"
   extern string str = "Hello World";
#endif

Form2.h:

#include "Form1.h"

答案 2 :(得分:0)

有几种方法......一种是使用全局变量(不一定是最好的方式......取决于每种情况)

首先,您可以使用include guard解决多重包含问题。

然后你可以在标题中使用extern关键字声明一个全局变量,并插入实现文件中的值。

例如:

//file: mylib.h
#ifndef MYLIB_H
#define MYLIB_H
extern int myGlobalVar;
#endif

//file: mylib.cpp
#include "mylib.h"
int myGlobalVar = 123;

现在您可以在其他文件中随时随地#include "mylib.h"访问同一个变量