Как получить доступ к элементам управления MdiParent из дочерней формы C ++ .NET

Мне нужно поставить ToolStripMenuItem на Enabled из Child Форма в C++ .NET, Я пытаюсь найти это в интернете, но ничего для C ++, все ответы на C #.

Я пытаюсь это, но не работает (menu_open это ToolStripMenuItem ):

this->MdiParent->Controls["menu_open"]->Enabled=true;

Я попробую:

(Form1)this->MdiParent->Controls["menu_open"]->Enabled=true;

а также

((Form1)this->MdiParent)->Controls["menu_open"]->Enabled=true;

но не найти Form1 это родитель. Пожалуйста помоги.

Я пытаюсь это: добавить строку

ref class Form1;

внутри пространства имен дочерней формы и строки

 Form1^ parent;

внутри public ref class Child … Теперь у меня есть объект родительской формы, и я пытаюсь:

parent->Controls["menu_open"]->Enabled = true;

Но у меня есть следующие ошибки:

   use of undefined type 'DataLogger::Form1'
left of '->Controls' must point to class/struct/union/generic type
left of '->Enabled' must point to class/struct/union/generic type
use of undefined type 'DataLogger::Form1'
left of '->Controls' must point to class/struct/union/generic type
left of '->Enabled' must point to class/struct/union/generic type

0

Решение

Если у кого-нибудь будет такая же проблема, я нашел ответ. Вам нужно будет использовать MdiChildActivate Событие родительской формы. Это событие будет появляться при создании дочернего объекта и при закрытии сборки, для решения этой проблемы используйте следующий код:

Создайте приватную переменную вне функции, установленной на 0:

private: static int closeChild = 0;

В private: System::Void Form1_MdiChildActivate(System::Object^ sender, System::EventArgs^ e) используйте этот код:

closeChild++;
String ^ childName = this->MdiChildren[0]->Text;

if(closeChild == 2)
menu_open->Enabled=true;

closeChild будет 2 на закрытии. И не забудьте сбросить closeChild до 0, когда создается новый ребенок, потому что closeChild будет увеличиваться до 3 и т. д.

Удачи !

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]