this->InitButton->Location = System::Drawing::Point(24, 8);
this->InitButton->Name = S"InitButton";
this->InitButton->Size = System::Drawing::Size(184, 24);
this->InitButton->TabIndex = 0;
this->InitButton->Text = S"Initialize NMC Network";
// this give an error
this->InitButton->Click += new System::EventHandler(this, InitButton_Click);
答案 0 :(得分:2)
this->InitButton->Click += gcnew System::EventHandler(this, InitButton_Click);
那是C3867,而不是C387。您必须在C ++ / CLI中使用方法名称指定类名。分配委托的语法与C#语言的语法完全不同,根本就没有语法糖。这与VS2010无关,它也无法在早期版本中编译。修正:
this->InitButton->Click += gcnew System::EventHandler(this, &Form1::InitButton_Click);
将 Form1 替换为Form派生类的名称。你实际上并不需要&但它是设计器生成的代码中的样板。让设计人员生成此代码是避免麻烦的最佳方法。
答案 1 :(得分:0)
除了Hans关于为委托构造获取指针成员的正确方法的答案之外,C ++ / CLI不在托管字符串上使用S前缀。
答案 2 :(得分:0)
谢谢, 你是对的错误代码(错字)。我现在能够编译并发出警告。我做了一些改变。 将公共语言运行时支持更改为旧语法,并且能够编译并运行它。
公共语言运行时支持,旧语法(/ clr:oldSyntax)