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

| 我想知道是否存在使表单完全透明(而不是隐藏表单)的陷阱。例如,我知道这些是隐藏表单时令我惊讶的事情: 如果表单是隐藏的,则无法与它的控件进行交互(无法将HTML添加到Web浏览器控件中,无法按下按钮等)。 在隐藏窗口时更改其窗口状态(最小化,最大化等)将在再次显示该窗体时使该窗口出现在工作区范围之外。 使用不透明度设置为0(完全透明)的表单时,是否有人遇到过类似的问题(或完全不同的问题!)?     
已邀请:
        从我的评论的最高票数中,我想我将其作为答案提交。我不鼓励使用
Form.Opacity = 0
。即使您可以禁用该表单以防止意外交互,我还是认为透明表单会覆盖其他窗口,并使用户困惑为什么他无法与透明窗口后面的窗口进行交互。 至于ѭ1的陷阱,我通常将表单响应放入队列中,以便当表单返回视图(或可见性)时,它会通过队列来处理操作(即更改FormState)。在隐藏表单时对其进行更改也确实会使用户感到困惑。     
        如果您不再需要该表格,请将其隐藏。 但是,如果您仍有任务或计时器以您要保留的形式运行,或者您想保留用户的输入,那么最好将不透明度设置为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.
    

要回复问题请先登录注册