当我们想实现子窗体一直悬浮在主窗体上,同时主窗体和子窗体都可以编辑,并且如果其他程序覆盖主窗体时同时覆盖子窗体。这时我们子窗体不能通过 ShowDialog 的方式打开,因为这样虽然子窗体在主窗体上面,但是主窗体是无法编辑的。所以我们要通过 Show 的方式打开,为了实现悬浮效果,我们可以设置子窗体的 TopMost 为 true,但是这时候其他程序覆盖主窗体时无法覆盖子窗体。
经研究发现,窗体的 Show 方法有个重载,允许传入一个窗体进去,此时子窗体将悬浮在传入的窗体上面,并且两个窗体都可以编辑,并且其他程序可以同时覆盖两个窗体,达到我们预期的效果。例如在 form1 中打开 form2 窗体,代码可以写成 form2.Show(this);