在我看來,你應該使用接口來改變表單之間的數據。這讓你保持更獨立,你的Form2只是獲得它需要的數據。例如:
public interface IForm1 //You should find better naming
{
void Edit(); //Method for edit some data
List<T> DataList {get;} //List with some relevant data
}
public Form Form1 : IForm1
{
public void Edit(){ //Your edit logic}
public List<T> DataList {get{return myGrid.DataSource as List<T>;}}
}
public Form Form2
{
private IForm1 formData;
public Form2(IForm1 formData)
{
formData = formData;
}
}
此外,我會考慮你的想法有這麼多的形式。我認爲一個帶有TabControl作爲第一個元素的MainForm在許多情況下是更好的選擇。您可以爲每個TabPage創建一個UserControl,並切換TabPage,而不是隨時彈出窗體。
UPDATE
此圖片也許澄清我的意思。 TabPageHeader都是不可見的(在圖像中,我可以看到它的澄清)。如果登錄成功,您只需切換TabPage。 TabControl.SelectedTabPage = tabPageMainScreen;
所以感覺對用戶更流暢,而且你沒有描述的問題。但我會建議通過不同的用戶控件分開窗體,以保持簡單。
更新2
在的WinForms,你可以隱藏TabHeader在本post建議。 例子:
tabControl.ItemSize = new Size(0, 1);
tabControl.SizeMode = TabSizeMode.Fixed;
這是一個有點難看,默認的TabControl不具有正規的方式,但它工作正常。
也許[MDI](https://msdn.microsoft.com/en -us/library/xyhh2e7e(v = vs.110).aspx)會是更好的方法嗎? – Groo
@Groo有趣的,但我的應用程序不需要任何menustrips或toolstrips。 – iamhx