C# 在哪里可以找到关于泡泡的好教程?

C# 在哪里可以找到关于泡泡的好教程?,c#,winforms,event-bubbling,C#,Winforms,Event Bubbling,我是C#新手,希望允许Windows窗体相互通信。我知道,但这没有多大帮助。我学习泡泡有哪些好方法 编辑:我希望在用户单击编辑->首选项时显示/创建一个选项表单。然后,我希望将用户在选项表单中更改的设置中继到主表单 您没有这么多的声明,但是主表单也是包含编辑->首选项菜单的表单吗?如果是这样,那么您已经处于代码中的正确位置 // This is the event handler in the main form private void mnuEditPreferencesClicked...

我是C#新手,希望允许Windows窗体相互通信。我知道,但这没有多大帮助。我学习泡泡有哪些好方法


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

您没有这么多的声明,但是主表单也是包含编辑->首选项菜单的表单吗?如果是这样,那么您已经处于代码中的正确位置

// 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
}
如果首选项窗体不是从主窗体生成的,则在首选项窗体关闭时,让主窗体以这种方式处理事件。

两种方法:

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

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

“冒泡”最常见于浏览器/DOM,而不是winforms。这就是你的意思吗?不,我在我的问题中添加了更多的信息来澄清。