2011-12-27 103 views
2

如何使窗體跟隨主窗體。子窗體跟隨主窗體

例如:打開一個winform [.net2],winform打開窗體,如果mainform正在移動,form將跟隨mainform。

enter image description here

+0

是否真的要2種形式?你想做什麼? – IAbstract 2011-12-27 13:33:52

+0

他可能正在嘗試在Paint.NET中執行與那些工具窗口類似的操作。 – 2011-12-27 13:35:26

+0

它實際上有可能這樣做?當移動mainform的位置時,childforum應該跟隨並保持距離。 – 2011-12-27 13:39:47

回答

2

使用MainForm中的LocationChanged事件始終設置ChildForm的位置。

工作例如:

Form childForm = new Form(); 

public Form1() { 
    InitializeComponent(); 

    childForm.Width = this.Width; 
    childForm.Height = 96; 
    childForm.Location = new Point(this.Left, this.Bottom); 
    childForm.Show(); 
    this.LocationChanged += Form1_LocationChanged; 
} 

private void Form1_LocationChanged(object sender, EventArgs e) 
{ 
    if (childForm != null) 
     childForm.Location = new Point(this.Left, this.Bottom); 
} 
+0

完美!謝謝你的反饋。 – 2011-12-27 14:05:58

+0

在OnLoad方法中執行此操作非常重要,發佈的代碼只會在您的開發機器上始終如一地工作。只有在OnLoad中,主要表單的實際大小以用戶首選項和表單縮放應用而着稱。 – 2011-12-27 18:14:53

0

表面上看答案很簡單,只需添加處理程序時,MainForm中被移動或調整大小,然後相應地設置childform位置和大小。

然而,你是否想要停止主窗體被移動,以使子窗體最終脫離屏幕。 孩子形式可以獨立移動。 如何最小化和最大化?

也許你希望其他安排,諾雷得不止一個孩子,左,右,子窗體上方主要形式...

值得一提寫一個佈局類,搡所有這些東西掉它。

+0

mainform和subform都有靜態大小。沒有最小也沒有最大化。 – 2011-12-27 14:01:49