C ++ / CLI: изменение свойства динамически добавленного элемента управления во время выполнения - PullRequest
0 голосов
/ 11 декабря 2019

Я видел, как это работает с 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 ^`"

Как получить этот объект в качестве элемента управления во время выполнения?

1 Ответ

1 голос
/ 11 декабря 2019

Метод Find возвращает массив. В вашем примере на C # вы вызываете First (), который возвращает первый элемент в массиве (возвращая ссылку на элемент управления). В примере C ++ вы не вызываете First () и ничего не делаете для получения одного элемента. Вот почему сообщение об ошибке указывает, что вы не можете преобразовать и массив (обратите внимание на cli :: array in error) на ссылку Control.

...