2

私は C# が初めてで、Windows フォームが相互に通信できるようにしたいと考えています。C# でバブリングをググったのですが、あまり役に立ちませんでした。バブリングを学ぶ良い方法は何ですか?

編集: ユーザーが [編集] -> [設定] をクリックしたときに表示/作成されるオプション フォームが必要です。次に、ユーザーがオプション フォームで変更した設定をメイン フォームに中継する必要があります。

4

2 に答える 2

1

2 つのアプローチ:

設定フォームにプロパティを配置し、ユーザーが [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);
     }
}
于 2009-08-17T21:56:52.177 に答える
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
}

設定フォームがメイン フォームから生成されていない場合は、設定フォームが閉じられたときにイベントを発生させ、メイン フォームがその方法でイベントを処理するようにします。

于 2009-08-17T21:53:26.050 に答える