c# Form.Hide() vs. Form.Opacity = 0

本文关键字:Form Opacity vs Hide | 更新日期: 2023-09-27 17:57:59

我想知道是否有任何方法可以使表单完全透明(而不是隐藏它)。例如,我知道在隐藏表格时,这些东西会让我大吃一惊:

  1. 如果表单被隐藏,则无法与它的控件交互(无法将HTML添加到Web浏览器控件,无法按下按钮等)
  2. 在窗口隐藏时更改窗口状态(最小化、最大化等)会导致该窗口在窗体再次显示时出现在工作区域的范围之外

是否有人在使用不透明度设置为0(完全透明)的表单时遇到过类似的问题(或完全不同的问题!)?

c# Form.Hide() vs. Form.Opacity = 0

如果您不再需要该表单,请将其隐藏。但是,如果你仍然有一个任务或计时器以你想保留的形式运行,或者你想保留用户的输入,那么你最好将不透明度设置为0%。当我想要一个表单被隐藏但仍然有效时,我会这样做:

frmMain.Opacity = 0; // To make it invisible.
frmMain.VisibleInTaskbar = false; // To make the taskbar entry of the form disappear, and to make sure that the WindowState isn't changed.
frmMain.Enabled = false; // To make sure the user doesn't type something in the form, or presses a button (by pressing enter) by accident.

从我的评论的票数来看,我想我会把它作为答案提交。我不鼓励使用Form.Opacity = 0。尽管你可以禁用该窗体以防止意外交互,但我认为透明窗体会覆盖其他窗口,并让用户困惑为什么他不能与透明窗体后面的窗口交互。

至于Form.Hide()的gotcha,我通常会对表单响应进行排队,这样当表单返回视图(或可见性)时,它会通过队列来处理操作(即更改FormState)。在表单隐藏时更改表单也会让用户感到困惑。