2012-02-28 1 views
1

私はいくつかの機能を実装しており、いくつかの子ウィンドウを持っている主な親winformを持っています。今私は子ウィンドウでも実行するために実装した機能が必要です。実行時にwinformにいくつかの関数を追加できますか?

たとえば、親ウィンドウでは、チェックボックスを選択して画像を移動しています。今、このチェックボックスをオンにすると、イメージは他のすべての子ウィンドウ上を移動する必要があります。

注:親ウィンドウ上を移動する画像はディサッパーでなければならず、上書きダイアログまたは子ウィンドウにのみ表示する必要があります。

可能であればお勧めします。

+0

フォームに同じ基本クラスがない場合は、ロジックを静的メソッドに入れて、すべての子を循環させることができますか? –

+0

fistには、すべてのダイアログまたは子ウィンドウの基本クラスがあり、2番目に静的メソッドを配置すると、他のすべてのウィンドウでimage(親ウィンドウ上を移動する)のようなすべてのコントロールを配置する必要があります。 – Abhishek

答えて

3

イベントを使用してみてください。

ImageMovedと呼ばれる親フォームのイベントを作成します。

子フォームはこのイベントを購読する必要があり、画像を移動するとイベントが発生し、子フォームはそのことを知ります。

これを行うさまざまな方法がたくさんあります。簡単な例:次に、あなたの子フォームは、次のようなものになります

public partial class Form1 : Form { 
    public event EventHandler ImageMoved; 

    private void OnImageMoved() { 
    if (ImageMoved != null) 
     ImageMoved(this, new EventArgs()); 
    } 

    private void button1_Click(object sender, EventArgs e) { 
    OnImageMoved(); 
    } 

    private void button2_Click(object sender, EventArgs e) { 
    Form2 f2 = new Form2(this); 
    f2.Show(); 
    } 
} 

public partial class Form2 : Form { 
    public Form2(Form1 parentForm) { 
    InitializeComponent(); 
    parentForm.ImageMoved += new EventHandler(parentForm_ImageMoved); 
    } 

    void parentForm_ImageMoved(object sender, EventArgs e) { 
    MessageBox.Show("Image moved"); 
    } 
} 

をあなたはより多くの情報を渡したい場合にも、そのようななどどの画像、として、あなた自身のEventArgsクラスを作成することができます

+0

返信いただきありがとうございます。理解しやすいように例を記入してください。 – Abhishek

+0

@ Abhisheks.net例を追加しました。 – LarsTech

関連する問題