我创建了这个自定义测试类:
#include "Form1.h"
class Demo
{
public:
void sayHello()
{
System::Windows::Forms::Form1->Text = "Hello Form!"; // does not work
Form1->Text = "Hello Form!"; // does not work
Form1.Text = "Hello Form!"; // does not work
}
};
我基本上得到了这个编译器错误:
c:\users\pieter kubben\documents\visual studio 2010\projects\testclassref\testclassref\Demo.h(8): error C2065: 'Form1' : undeclared identifier
c:\users\pieter kubben\documents\visual studio 2010\projects\testclassref\testclassref\Demo.h(8): error C2227: left of '->Text' must point to class/struct/union/generic type
所以我猜它看不到Form1。sayHello()
反过来,在 Form1 中单击按钮时调用该函数是没有问题的。
我注意到我的main()
函数(由 IDE 自动生成)包含这一行:
Application::Run(gcnew Form1());
因此,在我看来,尽管 Form1.h 确实存在(当然),但在编译器启动时尚未创建 Form1。
如何从我的自定义类中访问 Form1 元素?例如更改 Form1.Text?