2013-08-08 4 views
0

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

Я стараюсь это, но не работают (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

Если enyone будет иметь ту же проблему, я нашел ответ. Вам нужно будет использовать событие MdiChildActivate родительской формы. Это событие будет появляться при создании ребенка и когда cild закрыт, чтобы решить эту problème, используйте этот код:

Создать частный varible вне функции, установленные на 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, когда новый ребенок создан becouse closeChild будет увеличиваться до 3, и т.д ..

удачи!

Смежные вопросы