2012-01-16 142 views
0

什麼是從另一個子表單設置某些表單變量值的「智能和直接」方式。 說我有mainForm包含myVar(例如網絡端口號)和settingsButton,當單擊時顯示另一個表單settingsForm,旨在設置myVar .... 因爲settingsForm不能返回除DialogResult以外的東西,我該如何實現它。 我曾經通過將MainForm的瞬間settingsForm在其構造如下訪問其數據成員來實現它:從另一個表單設置變量

//////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 2012-01-16 14:37:29

+0

您可以將您的字段的引用傳遞給settingsForm,這樣,表單之間不存在依賴關係,但我認爲您必須使用事件來更改此值,這樣會更好。 – 2012-01-17 08:08:45

相關問題