Мне нужно поставить 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
Если у кого-нибудь будет такая же проблема, я нашел ответ. Вам нужно будет использовать 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 и т. д.
Удачи !
Других решений пока нет …