【问题标题】:how to get c# shown even after button X was hit?即使在按下按钮 X 后如何显示 c#?
【发布时间】:2018-08-31 22:20:40
【问题描述】:

我需要在关闭后隐藏我的表单,因为我不想重新构建它,所以我这样做了。

 private void dLCD_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Hide();
            e.Cancel = true; 
        }

要恢复我的窗口,我使用 .show()。虽然,显示不是第一次调用。我似乎找不到任何在调用 .show() 后会触发的事件。我最好的猜测是激活事件来解决这个问题,但它没有做任何事情。我考虑过使用标志和 getFocus 之类的东西,但也没有在 .show() 上调用它

我似乎找不到好的解决方案。

【问题讨论】:

  • 为什么不能重构表单?你想做什么?
  • 为什么你不能在任何时候关闭/打开Form.Close()Form.Show()
  • 我同意@emsimpson92,可能最好的选择是每次需要时都重新构建表单,但是,如果您想要在每个节目中触发的事件,您可以使用“已激活”事件。
  • 您是否尝试关闭并重建它,但速度很慢?如果您没有尝试过并且它不会影响性能,那么您为什么要让您的生活变得更加困难?只需关闭它并在需要时重新创建它。

标签: c# events show


【解决方案1】:

我建议您改用 Form.VisibleChanged 事件。每次表单的可见性更改时都会触发该事件。因此,您需要有一个标志来确定何时要执行启动代码(您在显示的事件中实际拥有的代码)。

示例让您了解事件处理程序的外观:

 private void Form1_VisibleChanged(object sender, EventArgs e)
 {
            if (_isClosing)
            {

            }
            else
            {
                // Code when form is shown
            }

            _isClosing = false;
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
            _isClosing = true;
            e.Cancel = true;
            Hide();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2013-08-25
    相关资源
    最近更新 更多