0

さまざまなことを試してみたので、明らかに行き詰まっています...フォームを作成しました。フォームにはボタンがあり、クリックすると新しいフォームが作成されます。この方法でクリックして複数のフォームを作成できます。私が望んでいてうまくいかないのは、メイン フォームに 2 番目のボタンを配置することです。クリックすると、セカンダリ フォームのすべての背景色が変更されます。

ありがとう - 私は閉じていると思いますが、もう一度 - 閉じることができません...

4

3 に答える 3

0

基本的に、この問題を解決するためにイベントやデリゲートの種類は必要ありません。セカンダリ フォームで、背景色を変更するパブリック メソッドを記述します。二次フォームのリストを保持し、ボタンがクリックされたら、すべての二次フォームをループして、色を変更するメソッドを呼び出します

イベントの使用

親フォームで次のようにします。

private event Action<Color> ChangeColor;

private void CreateAndShowForm()
{
    var form2 = new Form2();
    ChangeColor += form2.changeColor;
    /*do other stuff to show form*/
}

private void button1_Click(object sender, EventArgs e)
{
    ChangeColor(Color.Red);
}

子フォームで

public void changeColor(Color obj)
{
    /*change background color*/
}
于 2013-11-14T06:48:28.903 に答える
0

.NET では、イベントが発生すると、イベントをリッスンしている (イベント リスナーとして登録されている) すべてのオブジェクトに、イベントが発生したことが通知され、それぞれのイベント ハンドラーが実行されます。したがって、あなたの場合、各サブフォームは、イベントリスナーとしてメインフォームの特定のイベントに登録する必要があります。メイン フォームがイベントを発生させるたびに、サブフォームはイベントが発生したことを通知され、それに応じて動作します。

これは、C# のイベント パラダイムへのガイドと見なすことができます。

私が助けてくれることを願っています!

于 2013-11-14T07:13:01.153 に答える