2012-02-28 72 views
1

我有一個主要的父窗體,其中我實現了一些功能並且有多個子窗口。現在我想要我已經實現的功能在子窗口上運行。我們可以在運行時將一些函數添加到winform嗎?

例如,在父窗口中,我正在移動選中複選框的圖像。現在,如果選中此複選框,則圖像也應該移動到所有其他子窗口上。

注意:在父窗口上移動的圖像應該消失並且應該只顯示在操作對話框或子窗口上。

請建議是否有可能。

+0

如果表單沒有相同的基類,你可以把你的邏輯放在一個靜態方法中並循環所有的孩子? – 2012-02-28 12:40:24

+0

拳頭有所有的對話或子窗口相同的基類,第二,如果我將把一個靜態方法,那麼我也將不得不把所有的控制像圖像(這是在父窗口上移動)在所有其他窗口。 – Abhishek 2012-02-28 12:50:02

回答

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

感謝您的回覆,您可以將pelase放在任何示例中以便更好地理解。 – Abhishek 2012-02-28 12:45:03

+0

@ Abhisheks.net我加了一個例子。 – LarsTech 2012-02-28 13:34:32

相關問題