2010-10-10 138 views
0

我們正在開發MDI應用程序。我們需要做的是我有4個子表單和1個父表單。在父窗體ToolBox菜單上我有3個按鈕。添加,保存,取消。MDI應用程序主菜單幫助

我想要做的是什麼孩子窗體已經加載。當點擊這些按鈕時,他們應該處理子窗體上的操作。如果我的子窗體名爲CustomerManager是打開的,那麼通過按添加按鈕它應該基本上處理我的CustomerManager子窗體。很明顯,我會糾正每一個表單動作按鈕的邏輯。

我希望我能夠定義我在找什麼。

問候 Shax

回答

0

這最好通過聲明的接口來完成:

public interface IChildCommands { 
    void Add(); 
    void Save(); 
    void Cancel(); 
} 

而且讓你的MDI子窗體實現:

public partial class Form2 : Form, IChildCommands { 
    // Right-click IChildCommands in the editor and choose Implement Interface 
    //... 
} 

在你的父母,實施點擊事件爲這樣的工具欄按鈕:

private void AddButton_Click(object sender, EventArgs e) { 
     var child = this.ActiveMdiChild as IChildCommands; 
     if (child != null) child.Add(); 
    } 

如果一個小孩處於活動狀態而不執行該命令,則禁用該按鈕也是一個好主意。您可以通過編寫Application.Idle事件的事件處理程序來執行此操作:

void Application_Idle(object sender, EventArgs e) { 
     AddButton.Enabled = this.ActiveMdiChild is IChildCommands; 
     // etc.. 
    } 
+0

感謝Hans,我會按照您的建議進行操作,如果發現問題,將會更新您.... – Shax 2010-10-11 09:00:20