当我/拖动/移动form1围绕它后面的新表单时,我怎么能在同一时间与form1一起移动?

时间:2015-05-31 13:18:27

标签: c# .net winforms

我不想看到新表格。 我需要他最大化和与form1相同的大小但不要看到它。 因此,当我使用鼠标移动/拖动form1时,我需要使用form1移动/拖动它后面的新表单。

这是form1中的按钮点击事件,显示新表单:

private void BeginOperationBut_Click(object sender, EventArgs e)
        {
            if (this.imageList.Count == 0)
            {
                wbss = new WebBrowserScreenshots();
                wbss.Show();
            }
        }

wbss是新形式。

我尝试在新的表单设计器中将属性Locked设置为True,但它没有改变任何内容。

我想做的是两件事:

  1. 新表单应该在form1后面显示/启动。
  2. 新表单应该被锁定,因此当我在表单上拖动/移动时,它也会移动新表单。所以我不会只看到新形式的form1。
  3. 现在当我点击按钮时,新表单将在form1前显示。

1 个答案:

答案 0 :(得分:1)

有许多事情需要加以考虑,以确保其按预期工作。以下是您可以使用的一小段代码:

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属性,但结果并不像我预期的那样。

主要方面是跟踪主表单的大小或位置的变化,并相应地更新跟随者表单的大小和位置。此外,在显示时将跟随者表单发送到后面并重新激活主表单。试试看。这是来自.NET4.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();
    }
}

要获得更好的无激活功能,请查看: