我是C#的新手,並希望允許Windows窗體相互之間進行通信。我googled bubbling in C#但它沒有太大的幫助。我可以學習冒泡的一些好方法?我在哪裏可以找到關於冒泡的好教程?
編輯:我想要一個當我的用戶點擊Edit-> Preferances時顯示/創建的選項表單。然後,我希望將用戶在選項表單中更改的設置中繼到主窗體。
我是C#的新手,並希望允許Windows窗體相互之間進行通信。我googled bubbling in C#但它沒有太大的幫助。我可以學習冒泡的一些好方法?我在哪裏可以找到關於冒泡的好教程?
編輯:我想要一個當我的用戶點擊Edit-> Preferances時顯示/創建的選項表單。然後,我希望將用戶在選項表單中更改的設置中繼到主窗體。
兩種方法:
自己的喜好穿戴性質形成,當用戶單擊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);
}
}
您不會表述的很多,但主窗體也是包含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產生的喜好形式時偏好窗體關閉,並有主要形式處理該事件的方式。
「Bubbling」通常與瀏覽器/ DOM相關 - 而不是winforms。你是這個意思嗎? – 2009-08-17 21:38:50
不,我添加了更多的信息來澄清我的問題。 – 2009-08-17 21:41:27