2009-08-17 109 views
2

我是C#的新手,並希望允許Windows窗體相互之間進行通信。我googled bubbling in C#但它沒有太大的幫助。我可以學習冒泡的一些好方法?我在哪裏可以找到關於冒泡的好教程?

編輯:我想要一個當我的用戶點擊Edit-> Preferances時顯示/創建的選項表單。然後,我希望將用戶在選項表單中更改的設置中繼到主窗體。

+1

「Bubbling」通常與瀏覽器/ DOM相關 - 而不是winforms。你是這個意思嗎? – 2009-08-17 21:38:50

+0

不,我添加了更多的信息來澄清我的問題。 – 2009-08-17 21:41:27

回答

1

兩種方法:

自己的喜好穿戴性質形成,當用戶單擊OK從主要形式訪問它們。

if (preferenceForm.ShowDialog() == DialogResult.OK) 
{ 
    this.Color = preferenceForm.UserSelectedColor; 
    //etc... 
} 

從主窗體發送您的偏好窗體委託,並讓偏好窗體調用適當的更改。

class FormSettings 
{ 
    object Color {get, set} 
} 


class MainForm 
{ 
    ... 

    void ChangeSettings(FormSettings newSettings) 
    { ... } 

    void EditPreferences_Click(...) 
    { 
     ... 

     EditPreferencesForm editPreferences = new EditPreferencesForm(this.ChangeSettings) 
     editPreferences.ShowDialog(); 
    }  
} 

class EditPreferencesForm 
{ 
    ... 
    ChangeSettingsDelegate changeSettings; 
    FormSettings formSettings; 

    void OkButton_Click(...) 
    { 
      changeSettings(formSettings); 
    } 
} 
0

您不會表述的很多,但主窗體也是包含Edit-> Preferences菜單的窗體?如果是這樣,你已經在正確的點代碼

// This is the event handler in the main form 
private void mnuEditPreferencesClicked... 
{ 
    FrmPreferences frmPreferences = new FrmPreferences(); 
    frmPreferences.ShowDialog(this); 
    // Preferences saved, implement changes to main form here 
} 

如果不從的主要形式,fire off an event產生的喜好形式時偏好窗體關閉,並有主要形式處理該事件的方式。

相關問題