我在哪里可以找到关于冒泡的好教程?

时间:2009-08-17 21:35:20

标签: c# winforms event-bubbling

我是C#的新手,希望允许Windows表单相互通信。我googled bubbling in C#,但没有多大帮助。我可以学习冒泡的好方法吗?

编辑:我希望在用户点击Edit-> Preferances时显示/创建一个选项表单。然后,我希望用户在选项表单中更改的设置被中继到主表单。

2 个答案:

答案 0 :(得分:1)

两种方法:

将属性放在首选项表单上,并在用户单击“确定”时从主窗体中访问它们。

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);
     }
}

答案 1 :(得分: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当首选项表单关闭时,并且主表单以此方式处理事件。