.net 子窗体跟随主窗体

.net 子窗体跟随主窗体,.net,winforms,.net,Winforms,如何使子窗体跟随主窗体 例如:打开winform[.net2],winform打开窗体,如果mainform正在移动,则窗体跟随mainform 表面上看,简单的答案就是在主窗体移动或调整大小时添加处理程序,然后相应地设置子窗体的位置和大小 但是,您是否希望停止移动主窗体,使子窗体最终脱离屏幕。 子窗体可以独立移动。 那么最小化和最大化呢 你们可能需要其他的安排,不只是一个孩子,左右,在主窗体上面的子窗体 值得编写一个布局类,并将所有这些内容都推到它身上。使用MainForm中的Location

如何使子窗体跟随主窗体

例如:打开winform[.net2],winform打开窗体,如果mainform正在移动,则窗体跟随mainform


表面上看,简单的答案就是在主窗体移动或调整大小时添加处理程序,然后相应地设置子窗体的位置和大小

但是,您是否希望停止移动主窗体,使子窗体最终脱离屏幕。 子窗体可以独立移动。 那么最小化和最大化呢

你们可能需要其他的安排,不只是一个孩子,左右,在主窗体上面的子窗体


值得编写一个布局类,并将所有这些内容都推到它身上。

使用MainForm中的
LocationChanged
事件始终设置子窗体的位置

工作示例:

Form childForm = new Form();

protected override void OnLoad(EventArgs e) {
  base.OnLoad(e);

  childForm.StartPosition = FormStartPosition.Manual;
  childForm.Width = this.Width;
  childForm.Height = 96;
  childForm.Location = new Point(this.Left, this.Bottom);
  childForm.Show();
}

protected override void OnLocationChanged(EventArgs e) {
  base.OnLocationChanged(e);

  if (childForm != null) {
    childForm.Location = new Point(this.Left, this.Bottom);
  }
}

它真的必须是两种形式吗?你想做什么?他可能正在尝试做一些类似于Paint.NET中的工具窗口的事情。真的有可能吗?当移动主窗体的位置时,childforum应该跟随并保持距离。您必须编写代码来完成此操作。您使用的是什么技术?WinForms、WPF、Silverlight等?mainform和subform都有静态大小。没有min和Maximize。非常重要的是,在OnLoad方法中这样做,发布的代码只会在您的开发机器上一致地工作。只有在OnLoad中,用户首选项和应用的表单缩放才知道主表单的实际大小。