我怎么能做到这一点,当我/拖动/移动form1周围的新形式背后,它将与form1在同一时间移动
本文关键字:form1 移动 背后 新形式 同一时间 周围 当我 拖动 怎么能 这一点 | 更新日期: 2023-09-27 17:52:11
我不想看到新表单。我需要把它最大化,和form1一样大,但不能看到它。因此,当我用鼠标移动/拖动form1时,我需要它后面的新表单将与form1一起移动/拖动。
这是一个在form1中显示新表单的按钮点击事件:
private void BeginOperationBut_Click(object sender, EventArgs e)
{
if (this.imageList.Count == 0)
{
wbss = new WebBrowserScreenshots();
wbss.Show();
}
}
wbss是新的形式。
我尝试在新的表单设计器设置属性锁定为True,但它没有改变任何东西。
我想做两件事:
- 新表单应该在form1后面显示/开始。 新表单应该被锁定,所以当我拖动/移动表单时,它也会移动新表单。所以我不会看到新的表单只有form1。
现在的方式是,当我点击按钮,新的表单显示在前面的form1
有很多事情需要考虑,以确保这是预期的工作。下面是一段你可以用来开始的代码片段:
public partial class FollowForm : Form {
readonly Form _master;
private FollowForm() {
InitializeComponent();
}
public FollowForm(Form master) {
if (master == null)
throw new ArgumentNullException("master");
_master = master;
_master.LocationChanged += (s, e) => Location = _master.Location;
_master.SizeChanged += (s, e) => Size = _master.Size;
ShowInTaskbar = false;
}
protected override void OnShown(EventArgs e) {
base.OnShown(e);
Location = _master.Location;
Size = _master.Size;
_master.Activate();
}
protected override void OnActivated(EventArgs e) {
_master.Activate();
}
}
我尝试用ShowWithoutActivation
属性进行实验,但结果与我预期的不同。
主要方面是跟踪主表单的大小或位置的变化,并相应地更新从表单的大小和位置。此外,在显示时将跟随表单发送到后台,并重新激活主表单。试试吧。这是来自一个。net 4.0项目,VS2013。
使用public partial class MasterForm : Form {
FollowForm _follower;
public MasterForm() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
_follower = new FollowForm(this);
_follower.Show();
}
}
关于no-activate特性的更好方法,请查看:
- 显示表单而不窃取焦点?
- 在所有东西后面显示表单,而不窃取焦点?