将以一种形式定义的变量的值写入另一种形式

时间:2014-12-27 17:45:00

标签: forms file variables c++-cli streamwriter

过去几个小时我一直在谷歌上搜索,我仍然不确定上述问题的答案。代码如下:

optionsForm.h

public: String^ hostScreenOption;
private: System::Void saveButton_Click(System::Object^  sender, System::EventArgs^  e) {

          if (hostScreenTrueRadio -> Checked == true)
          {
              hostScreenOption = "True";
          }
          else if (hostScreenFalseRadio -> Checked == true)
          {
              hostScreenOption = "False";
          } 

          Form::Close();
     }

finalForm.h

#include "optionsForm.h"

String^ name;
String^ city;

private: System::Void continueButton_Click(System::Object^  sender, System::EventArgs^  e) { 
         StreamWriter^ optionsWriter = gcnew StreamWriter("Game     Files\\Millionaire\\preferences.txt");

          if (nameBox -> Text == "")
          {
             warningLabel -> Text = "Please must enter your name!";
          }
          else
          {
                name = nameBox -> Text;
          }

          if (cityBox -> Text == "")
          {
              warningLabel -> Text = "You must enter your city and country!";
          }
          else
          {
              city = cityBox -> Text;
          }

          optionsWriter -> WriteLine (hostScreenOption);
          optionsWriter -> WriteLine (name);
          optionsWriter -> WriteLine (city);

          delete optionsWriter;
          Application::Exit();
          Process::Start("Game Files\\Millionaire Host Screen.exe");
        }

我所拥有的是optionsForm,这是一个带有单选按钮和标签的表单,用于选择选项(每个单选按钮为true或false)如果单击true按钮,则指定" True&#34的值;,作为字符串,到hostScreenOption,反之亦然。在finalForm上,用户输入他们的姓名,城市和国家,然后按继续。名称文本框内的文本和城市文本框内的文本分别分配给字符串变量name和city。最后,所有这些变量都写入.txt文件,该文件由单独的程序加载。名称和城市值将写入.txt文件,没有问题,但hostScreenOption不是。我收到的错误是" hostScreenOption - 未声明的标识符"由于我已将其声明为公共变量并包含optionsForm.h,因此我感到困惑。你们中的任何人都能指出我可能做错的正确方向,或者做出我尝试的更有效的方法吗?

1 个答案:

答案 0 :(得分:0)

optionsForm.h中的变量必须是extern,因此:public: extern String ^ hostScreenOption;。 然后,您必须在finalForm.hString ^ hostScreenOption;

中重新定义它

我不确定这是否有用,因为我不知道hostScreenOption是全局定义的还是在课堂上,你必须尝试。

但为什么要使用String ^?这需要花费大量内存,因此请尝试使用bool并在optionsForm.h中将其声明为extern和global,然后在finalForm.h中执行相同操作:bool hostScreenOption;

至少用if条件替换optionsWriter -> WriteLine (hostScreenOption);

if (hostScreenOption)
    optionsWriter -> WriteLine ("True");
else
    optionsWriter -> WriteLine ("False");