簡體   English   中英

打開第二個表單,右下一個表單

[英]Open second form, right next first form

我正在使用winforms。

我創建了一個幾乎完成的應用程序。 請考慮以下內容:我有兩種形式,第一種形式從應用程序啟動開始,第二種形式需要在第一種形式旁邊打開。

例:

形式碰撞

如何在第二個表單中訪問第一個表單的位置? 我應該將“this”發送給第二種形式的構造函數嗎?

編輯

以下代碼幫助我:

private void changelogToolStripMenuItem_Click(object sender, EventArgs e)
{
     if (_changelog.IsDisposed)
     {
            _changelog = new Changelog();
     }
            _changelog.Location = new Point((Left + Width), Top);
            _changelog.Show();
}

在設計構造函數時要記住的基本規則: 永遠不要向構造函數提供任何不必要的信息。

所以,你需要的不是另一個窗口,而是它的位置。 更好的是,您需要新窗口所在的位置。

這意味着你不應該讓第二個表單知道第一個表單,而是它的構造函數應該采用:

  1. 一個參數Point location
  2. 兩個參數int x, int y

取決於你的偏好。 您當然可以(應該)擁有兩個構造函數,因此您可以決定是給出Point location還是int x, int y

這一切都說,忘了你讀的。 比使用構造函數更好,我只需在創建第二個表單時手動設置屬性:

SecondForm form = new SecondForm()
{
    Location = new Point(this.Right, this.Top)
};

這只是另一種說法:

SecondForm form = new SecondForm();
form.Location = new Point(this.Right, this.Top);

打開時為什么不定位新表格?

Form2 f = Form2();
f.Location = new Point(this.Left + this.Width, this.Top);
f.Show();  // Or ShowDialog()

當然,這需要將第二個表單屬性StartPosition設置為FormStartPosition.Manual

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM