【问题标题】:Open second form, right next first form打开第二个表格,然后打开第一个表格
【发布时间】:2013-05-03 11:34:54
【问题描述】:

我正在使用 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();
}

【问题讨论】:

    标签: c# winforms visual-studio location


    【解决方案1】:

    在设计构造函数时要牢记的基本规则:永远不要向构造函数提供任何不必要的信息。

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

    这意味着您不应该让第二个表单知道第一个表单,而是它的构造函数应该采取以下任一方式:

    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);
    

    【讨论】:

    • 会在允许时接受你的回答,因为你的回答解决了问题
    【解决方案2】:

    为什么打开新表单时不定位?

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

    当然,这要求第二个表单属性StartPosition设置为FormStartPosition.Manual

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      相关资源
      最近更新 更多