【问题标题】:Create new form on same screen position在同一屏幕位置创建新表单
【发布时间】:2023-03-16 05:07:01
【问题描述】:

我想在同一位置创建一个新表单。当我调用此代码时,会打开一个新表单,但位于不同的屏幕位置。

private void BtnAddForm_Click(object sender, EventArgs e)
{
     Form2 form2 = new Form2();
     form2.Tag = this;
     form2.Location = this.Location;
     form2.Show(this);
     Hide();
}

我使用this.Location 从我的第一个表单中获取位置,但这没有效果。

【问题讨论】:

    标签: c# wpf forms winforms location


    【解决方案1】:

    您需要将StartPosition 属性设置为Manual 才能工作。

    private void BtnAddForm_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Tag = this;
        form2.StartPosition = FormStartPosition.Manual;         
        form2.Location = this.Location;
        form2.Show(this);
        Hide();
    }
    

    【讨论】:

      【解决方案2】:

      使用这个。希望有帮助

          private void BtnAddForm_Click(object sender, EventArgs e)
          {
              Form2 form2 = new Form2();
              form2.Show(this);
              form2.Tag = this;
              form2.Location = this.Location;
              Hide();
          }
      

      【讨论】:

      • 谢谢,这可行,但会导致页面跳转,因此看起来不太流畅
      • 好的,我刚刚修复了您的代码。 @user2946329 的答案对你有用。
      【解决方案3】:

      使用form2.StartPosition = FormStartPosition.Manual;,你也应该使用form2.Closed += (s, args) => this.Close();在隐藏父表单后关闭它试试这个:

      Hide();
      Form2 form2 = new Form2();
      form2.Tag = this;
      form2.StartPosition = FormStartPosition.Manual;
      form2.Location = this.Location;
      form2.Closed += (s, args) => this.Close();
      form2.Show();
      

      【讨论】:

        【解决方案4】:

        最简单的方法是使用表单的StartPosition 属性。此属性应在显示表单之前设置。您可以在调用 Show 或 ShowDialog 方法之前或在表单的构造函数中设置此属性。

        例如: form2.StartPosition = FormStartPosition.CenterParent

        【讨论】:

          【解决方案5】:
          private void button5_Click(object sender, EventArgs e)
          {
              Form1 NewForm = new Form1();
              NewForm.Show();
              NewForm.Location = this.Location;
              this.Dispose(false);
          }
          

          这是一个非常简单的。

          【讨论】:

          • 与接受的答案相比,您的答案没有提供任何新的有意义的信息。
          猜你喜欢
          • 2018-09-18
          • 1970-01-01
          • 1970-01-01
          • 2011-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-16
          相关资源
          最近更新 更多