如何保持"form.ShowDialog()"的"this.ShowInTaskBar"同时保持打开状态?

Fre*_*dou 5 .net c# winforms

如果您在一个包含2个表单的全新winform应用程序中运行此代码片段(将其放在form1中)

    private void Form1_Load(object sender, EventArgs e)
    {
        Form2 newForm = new Form2();
        Button b = new Button();
        newForm.Controls.Add(b);
        b.Click += new EventHandler(click);
        this.Show();
        newForm.ShowDialog();

    }

    private void click(object sender, EventArgs e)
    {
        ((Form)((Control)sender).Parent).ShowInTaskbar = false;
    }
Run Code Online (Sandbox Code Playgroud)

然后单击新表单上的按钮(应该是form2),form2将关闭.

如何保持开放?

Fre*_*dou 0

怎么...我的...这是一个丑陋的黑客

这项工作

    private void Form1_Load(object sender, EventArgs e)
    {
        Form2 newForm = new Form2();
        Button b = new Button();
        newForm.Controls.Add(b);
        b.Click += new EventHandler(click);
        newForm.FormClosed += new FormClosedEventHandler(form2_closed);
        newForm.FormClosing += new FormClosingEventHandler(form2_closing);
        this.Show();
        do
        {
          newForm.ShowDialog();
        } while (newForm.IsDisposed == false );               
    }

    private void click(object sender, EventArgs e)
    {
        ((Form)((Control)sender).Parent).ShowInTaskbar = !((Form)((Control)sender).Parent).ShowInTaskbar;
    }

    private void form2_closed(object sender, FormClosedEventArgs e)
    {
        ((Form)sender).Dispose();
    }

    private void form2_closing(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason == CloseReason.None)
            e.Cancel = true;
    }
Run Code Online (Sandbox Code Playgroud)