从不同的头文件,Visual C ++ 2010更改标签文本?

时间:2014-01-07 19:24:30

标签: winforms visual-studio-2010 c++-cli header-files

我正在使用Visual C ++ 2010 Express。我有一个表单(Form1.h),其中包含一个按钮(btn1)和一个标签(label1)。

当我点击按钮时,我想从不同的头文件(testing.h)调用一个函数,然后该文件将继续更改标签中的文本。

我拥有的是这样的......

Form1.h

#include "testing.h"

... standard form code generated by Visual Studio

private: System::Windows::Forms::Label^  label1;

...

private: System::Void btn1_Click(System::Object^  sender, System::EventArgs^  e) {
        testfunc1();
    }
};

其中testing.h类似......

#ifndef _TESTING_FUNCS
#define _TESTING_FUNCS

void testfunc1(){
    label1->Text = "Text has been changed from outside.";
}

#endif

当我尝试编译并运行它时,我收到的错误是'label1' is an undeclared identifier(在testing.h中),而错误是指“left of '->Text' must point to class/struct/...

我是C ++的新手,通常使用Java,所以这里有一些新的东西。对我来说,有两个明显的选择:

1)将标签作为参数传递给函数

2)以某种方式访问​​testing.h头文件中的标签,无参考

但我不确定该如何做。

1 个答案:

答案 0 :(得分:2)

标签是类的私有变量,就像在Java中一样,无法从外部访问,尤其是在静态上下文中。您可以传递标签,也可以在表单中创建一个访问者函数并传递整个表单。

传递标签的示例:

void testfunc1(System::Windows::Forms::Label^ someLabel)
{
    someLabel->Text = "Text has been changed from outside.";
}

致电:

System::Void btn1_Click(System::Object^  sender, System::EventArgs^  e) 
{
    testfunc1(label1);
}