C# 如何使一个表单不断覆盖另一个表单?

C# 如何使一个表单不断覆盖另一个表单?,c#,winforms,C#,Winforms,我需要form2位于form1之上,并且与form1的大小和位置相同。特别是当form1的位置发生变化时。简单地说,如何让form2跟随form1?订阅form1的SizeChanged事件,方法是在构造函数中或通过Visual Studio中的“属性”菜单添加事件处理程序,并在其中更新form2的大小和位置 要手动添加事件处理程序,请在构造函数中添加以下内容: this.SizeChanged += new System.EventHandler(this.AlbumChooser_SizeC

我需要form2位于form1之上,并且与form1的大小和位置相同。特别是当form1的位置发生变化时。简单地说,如何让form2跟随form1?

订阅form1的SizeChanged事件,方法是在构造函数中或通过Visual Studio中的“属性”菜单添加事件处理程序,并在其中更新form2的大小和位置

要手动添加事件处理程序,请在构造函数中添加以下内容:

this.SizeChanged += new System.EventHandler(this.AlbumChooser_SizeChanged);
如果只键入this.SizeChanged+=则会为您创建两次该行其余部分的tab和事件处理程序方法。然后处理程序将如下所示:

    private void AlbumChooser_SizeChanged(object sender, EventArgs e)
    {
        form2.Location = new Point(this.Location);
        ....
    }

您可能还必须订阅ResizeEnd事件。

看起来您正在寻找错误的解决方案。我要做的是创建2个,一个用于当前表单1,另一个用于当前表单2

将滚动文本放入UserControl1,将图像放入UserControl2

将这两个用户控件添加到表单中,重叠,并更改用户控件的可见性,而不是创建新表单。交换时:

private void SwapVisibility() {
    UserControl1.Visible = !UserControl1.Visible;
    UserControl2.Visible = !UserControl2.Visible;
}

最初将UserControl2的Visibile属性设置为false。

为什么?我看不出有必要这样做。你想实现什么?在form1上我有…滚动文本。Form2包含一个有助于聚焦form1中文本的图像。我需要表格2来跟随表格1。谢谢为什么不在Form1上添加另一个控件?我无法使控件透明。请使用Showowner重载并实现LocationChanged事件。您在Win7上激活和最小化动画时会遇到问题。订阅是什么意思?如何实现这一点?@Vlad-您使用的WinForms或WPF是什么技术?好的。但是,我如何才能准确地更新收到的错误的大小和位置,例如无法修改“System.Windows.Forms.Form.Location”的返回值,因为它不是一个变量。@Vlad-在我编写form2时,您应该能够。它没有告诉我酒店的位置。当我把它写出来时,它用红色下划线。