WinForm/C# 如何实现子窗体悬浮在主窗体上 (非 ShowDialog 和 TopMost 方式)

wangqingjie · 2019年09月25日 · 147 次阅读

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

楼主好帅~学到了~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册