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

时间:2011-05-31 15:49:32

标签: c# winforms user-interface opacity

我想知道是否有任何陷阱让表格完全透明(而不是隐藏它)。例如,我知道这些是隐藏表单时让我感到惊讶的事情:

  1. 如果表单被隐藏,则无法与其控件进行交互(无法将HTML添加到Web浏览器控件,无法按下按钮等)。
  2. 当窗口被隐藏时,更改窗口的WindowState(最小化,最大化等)将导致窗口在再次显示窗体时显示在工作区域的范围之外。
  3. 在使用不透明度设置为0(完全透明)的表单时,是否有人遇到过类似的问题(或完全不同的问题!)?

2 个答案:

答案 0 :(得分:1)

如果您不再需要该表单,请将其隐藏。 但是如果您仍然有一个任务或计时器在您想要保留的表单中运行,或者您想保留用户的输入,那么您可以将不透明度设置为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.

答案 1 :(得分:1)

从我的评论的票数,我想我会提交它作为答案。我不鼓励使用Form.Opacity = 0。即使您可以禁用表单以防止意外交互,我认为透明表单会覆盖其他窗口并使用户混淆为什么他无法与透明窗口后面的窗口进行交互。

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