Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在与以前的win form C相同的位置打开新的win form C#_C#_Forms - Fatal编程技术网

如何在与以前的win form C相同的位置打开新的win form C#

如何在与以前的win form C相同的位置打开新的win form C#,c#,forms,C#,Forms,我正在尝试让Win Form应用程序在与上一个表单相同的位置打开。到目前为止,我找到的唯一折中方案是将StartPosition设置为CenterScreen;但是,我希望新表单在前一个表单停止的地方实际打开 下面是我尝试使用的代码 form1f1=newform1(); this.Hide(); F1.ShowDialog(); F1.Left=这个.Left; F1.Top=这个.Top; F1.Size=此.Size; 这个。关闭(); 哦!我以前碰到过这个。请尝试以下代码,并让我知道它是

我正在尝试让Win Form应用程序在与上一个表单相同的位置打开。到目前为止,我找到的唯一折中方案是将StartPosition设置为CenterScreen;但是,我希望新表单在前一个表单停止的地方实际打开

下面是我尝试使用的代码

form1f1=newform1();
this.Hide();
F1.ShowDialog();
F1.Left=这个.Left;
F1.Top=这个.Top;
F1.Size=此.Size;
这个。关闭();

哦!我以前碰到过这个。请尝试以下代码,并让我知道它是否适合您:

yourNewForm.Location=新点(this.Left,this.Top)

或者,如果调用表单仍然存在,则更容易:

yourNewForm.Location=this.Location

您可以获取要隐藏的表单的名称,并使用它设置新表单的位置。但是,如果希望WinForms引擎考虑此位置,则需要将属性设置为FormStartPosition.Manual

// Current form
Form f1 = new Form();
f1.Show();
Application.DoEvents();
Thread.Sleep(5000);

f1.Hide();
Form f2 = new Form();
f2.StartPosition = FormStartPosition.Manual;
f2.Location = f1.Location;
f2.Size = f1.Size;
f2.ShowDialog();

顺便说一下,在您的代码中,在调用ShowDialog之后设置属性Top、Left和Size是无用的,因为ShowDialog是模态的,在关闭使用ShowDialog打开的表单之前不会返回,因此,您将这些属性应用于一个封闭表单

您是否尝试过设置F1.Location=this.Location在它出现后?制作一个
屏幕
对象,从屏幕上获取表单的药水,并将其保存在DictionaryTanks中以供快速评论@Steve。这确实帮助我解决了这个问题。是的,在立场声明之后滑动ShowDialog修复了它。感谢您让我知道,一旦调用ShowDialog语句,后面的内容就无关紧要了;然而,我所关注的部分是F1.ShowDialog。我在评论中提到的东西(但删除了lol)?你现在可以用了吗?是的,我现在可以用了。感谢您展示了另一种编码方式。