2013-08-08 4 views
0

ToolStripMenuItemEnabled에 넣고 Child 양식을 C++ .NET으로 만들어야합니다. 나는 인터넷에서 이것을 찾으려고 노력하지만, C++에서는 아무것도 찾지 못한다. C#에 대한 모든 대답 도자기.자식 폼 C++ .NET에서 MdiParent 컨트롤에 액세스하는 방법

나는 이것을 시도했지만 작동하지 않습니다 (menu_openToolStripMenuItem입니다) :

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

내가 시도 :

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

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

하지만를 찾을 수 없습니다 부모 인 Form1 도와주세요.

나는 이것을 시도 : 자식 폼의 네임 스페이스와 라인 public ref class Child의 내부

Form1^ parent; 

내부의 라인

ref class Form1; 

를 추가 ... 지금은 부모 폼의 객체를하고 난 시도 :

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

그러나 나는이 오류가 : enyone이 같은 문제가됩니다

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 이벤트를 사용해야합니다. 이 이벤트는 아이가 생성 될 때 나타나며 cild가 닫 혔을 때,이 probleme를 해결하려면이 코드를 사용 :

private: static int closeChild = 0; 

private: System::Void Form1_MdiChildActivate(System::Object^ sender, System::EventArgs^ e) 사용 중 : 0에 설정 한 기능 이외의 개인 varible 만들기

을 이 코드 :

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

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

closeChild 2 개가 닫힙니다. 그리고 새로운 아이가 closeChild 렸기 때문에 만들어 질 때 등등, 3

행운을 증가합니다 closeChild 0에를 다시 설정하는 것을 잊지 마세요!