2012-01-16 3 views
0

다른 양식의 일부 양식 변수 값을 설정하는 '스마트하고 직접적인'방법은 무엇입니까? 예를 들어 myVar (네트워크 포트 번호)가 들어있는 mainForm과 클릭하면 myVar .... 설정을 목표로하는 다른 폼 settingsForm이 표시되는 settingsButton ...settingsForm이 DialogResult 이외의 것을 반환 할 수 없기 때문에 어떻게 할 수 있습니까? 나는 다음과 같이 해당 데이터 멤버에 액세스하기 위해 생성자에서 settingsForm에 mainForm 순간을 전달하여이를 구현하는 데 사용 :다른 양식의 변수 설정

//////mainForm.h: 
#include "settingsForm.h" 
... 
ref class mainForm: puplic Form 
{ 
puplic: 
    int myVar; 
private: void settingsButton_Click(Object^ sender, EventArgs^ e) 
{ 
    (gcnew settingsForm(this))->ShowDialog(); 
} 
... 
}; 
.... 
////////settingsForm.h 
... 
ref class mainForm; //forward declaration to avoid circular dependency 
ref class settingsForm:public Form 
{ 
mainForm^ mf; 
settingsForm(mainForm form) 
{ 
    .... 
    mf=form; 
} 
void okButton_click(Object^ sender, EventArgs^ e); //definition in the cpp file 
... 
}; 
///////settingsForm.cpp 
... 
void settingsForm::okButton_click(Object^ sender, EventArgs^ e) 
{ 
    mf->myVar= someValue; 
} 
... 

답변

0

당신은 그들 사이에 데이터를 교환하는 이벤트 또는 공유 영역을 사용할 수 있습니다. 그러나 나는 당신의 방법이 간단하고 더 좋다고 생각합니다. 왜 다른 방법을 찾고 있습니까?

+0

답장을 보내 주셔서 감사합니다. 예를 들어 settingsForm에서 값을 반환하여 cpp 및 h 파일을 다시 작성하지 않도록하는 방법이 있는지 궁금합니다. – user746277

+0

필드의 참조를 settingsForm에 전달할 수 있습니다. 이렇게하면 양식간에 종속성은 없지만이 값을 변경하려면 이벤트를 사용해야한다고 생각합니다. –