0

オプションフォームに[適用]ボタンを追加しようとしましたが、機能しませんでした。

これが私が試したことです:

frm_Main

frm_Options Options = new frm_Options();
Options.btn_Apply.Click += new System.EventHandler(this.btn_Apply_Click);

後で...

Options.Show();

..。

void btn_Apply_Click(object sender, EventArgs e)
{
    LoadPreferences();
}

frm_Main基本的に私がそれを行うことを考えることができる唯一の方法は、からのボタンに偶数ハンドラーを追加することでしたfrm_Options。私の推測では、あなたはこれを行うことができません、別の方法がありますか、それとも私がそれをやろうとした方法は可能ですか?

編集1:ボタンを押したときに関数を呼び出したいので、frm_Mainでこれを実行したい。 「機能frm_Main しない」とは、「適用」ボタンがクリックされたときにイベントが発生しないことを意味します。

4

1 に答える 1

1

オプションフォーム内でイベントを宣言する必要があります

public event EventHandler RefreshOptions;

ボタンクリックイベントでイベントを発生させます(サブスクライバーがある場合)-例:

 var refreshOptions = RefreshOptions;
        if (refreshOptions != null)
            refreshOptions(this, new EventArgs());

次に、メインフォームでイベントを購読します-

Options options = new Options();
options.RefreshOptions += MainRefresh;

MainRefreshイベント(またはあなたがそれを呼ぶもの)を作成します

 void MainRefresh(object sender, EventArgs e)
 {
     // TODO
  }
于 2013-03-07T19:20:53.577 に答える