我想知道是否有任何方法可以使表单完全透明(而不是隐藏它)。例如,我知道在隐藏表格时,这些东西会让我大吃一惊:
- 如果表单被隐藏,则无法与它的控件交互(无法将HTML添加到Web浏览器控件,无法按下按钮等)
- 在窗口隐藏时更改窗口状态(最小化、最大化等)会导致该窗口在窗体再次显示时出现在工作区域的范围之外
是否有人在使用不透明度设置为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)。在表单隐藏时更改表单也会让用户感到困惑。