C ++ / CLI:在运行时更改动态添加的控件的属性

我已经看到它可以在C#中使用,但在Visual C ++ 2015中却不能使用

System::Windows::Forms::Label^ mylabel= (gcnew System::Windows::Forms::Label());
mylabel->Name = L"pole";
mylabel->Text = "Hello";
this->Controls->Add(mylabel);

请注意,mylabel在这里是一个临时变量。 现在该代码适用于C#

Control cc = this.Controls.Find("pole",true).First();
cc.text="New";

由于没有.First()或-> first(),

Control^ x = this->Controls->Find(L"pole",true);

肯定会显示错误

`cli::array<System::Windows::Forms::Control ^,1> ^" cannot be used to initialize an entity of type "System::Windows::Forms::Control ^`"

如何在运行时将该对象作为Control?

lusia_123 回答:C ++ / CLI:在运行时更改动态添加的控件的属性

Find方法返回一个数组。在您的C#示例中,您调用First(),它返回数组中的第一项(返回对控件的引用)。在C ++示例中,您不调用First()或执行任何操作来检索单个项目。这就是为什么错误消息指示您不能将数组和数组(注意cli :: array错误)转换为控件引用的原因。

本文链接:https://www.f2er.com/2940778.html

大家都在问