【问题标题】:How to override closing control in Windows Form c#如何在 Windows 窗体 c# 中覆盖关闭控件
【发布时间】:2013-01-19 21:42:34
【问题描述】:

我想让X控件关闭窗口以隐藏当前显示的前一个窗体。

在form1中我得到了:

private void button1_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Tag = this;
    form2.Show(this);
    Hide();
}

然后当我点击 X 时,我想显示上一个并隐藏当前。

【问题讨论】:

    标签: c# forms navigation


    【解决方案1】:

    你不应该仅仅因为这个而覆盖Form.OnFormClosing()Form.FormClosing 事件为您提供了此功能:

    void MainForm_FormClosing(object sender, FormClosingEventArgs e)
    {
      // Prevent the user from closing this window, minimize instead.
      if (e.CloseReason == CloseReason.UserClosing)
      {
        this.WindowState = FormWindowState.Minimized;
        e.Cancel = true;
      }
    }
    

    【讨论】:

      【解决方案2】:

      您可以覆盖OnFormClosing 来执行此操作。

       protected override void OnFormClosing(FormClosingEventArgs e)
      {
          if (e.CloseReason == CloseReason.WindowsShutDown) return;
      
          // DO WHATEVER HERE
      }
      

      【讨论】:

        【解决方案3】:

        您必须跟踪您的实例化表单。

        // Program.cs
        
        public static FormA Instance;
        
        public static void Main()
        {
            Instance = new FormA();
            Instance.Show();
        }
        

        然后:

        // FormB.cs
        
        private void button1_Click(object sender, EventArgs e)
        {
            Hide(); // Hide current...
            Program.Instance.Show(); // Show previous...
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-21
          相关资源
          最近更新 更多