【发布时间】:2012-11-25 11:40:51
【问题描述】:
我有一个主窗体 Form1 和一个辅助窗体 LogForm。当 LogForm 首次出现时,它的左上角应该与 Form1 的右上角相接触。我可以做那部分。但是,如果我移动 Form1 时可以让 LogForm 保持与 Form1 接触,我也希望它(即,拖动 Form1 会拖动 LogForm)。任何想法如何做到这一点?编辑:我对鼠标事件很陌生,所以如果涉及到,请彻底解释。
【问题讨论】:
我有一个主窗体 Form1 和一个辅助窗体 LogForm。当 LogForm 首次出现时,它的左上角应该与 Form1 的右上角相接触。我可以做那部分。但是,如果我移动 Form1 时可以让 LogForm 保持与 Form1 接触,我也希望它(即,拖动 Form1 会拖动 LogForm)。任何想法如何做到这一点?编辑:我对鼠标事件很陌生,所以如果涉及到,请彻底解释。
【问题讨论】:
最终答案;效果很好! (lf 是一个 LogForm)
private void Form1_Move(object sender, EventArgs e)
{
Point f1pos = self.Location;
Point logPos = new Point(f1pos.X + this.Width + 5, f1pos.Y + 5);
lf.StartPosition = FormStartPosition.Manual;
lf.DesktopLocation = logPos;
}
【讨论】:
您可以使用Move event 来处理位置更新。该事件将返回表单的新位置 - 左上角。将表单的宽度添加到此,您应该能够获得所需的位置信息。
【讨论】:
在主窗口中添加一个事件处理程序
this.LocationChanged += new System.EventHandler(this.MainWindow_LocationChanged);
在事件处理程序例程调用中
SlaveWindow.Location = new Point(this.Location.X + this.Width, this.Location.Y);
来自 LocationChanged 事件处理程序
【讨论】: