如何改变" this.ShowInTaskBar"对于" form.ShowDialog()"同时保持开放? [英] how to change "this.ShowInTaskBar" for a "form.ShowDialog()" while keeping it open?

查看:239
本文介绍了如何改变" this.ShowInTaskBar"对于" form.ShowDialog()"同时保持开放?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果您运行在一个全新的winform应用程序这个片段的code(把它放在窗口1)用2种形式

if you run this snippet of code(put it in form1) in a fresh new winform app with 2 forms

    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;
    }

和你点击新的窗体上的按钮(应该是窗口2),窗口2将关闭。

and you click on the button on the new form(should be form2), form2 will close.

如何保持打开状态?

推荐答案

如何......我......这是一个丑陋的黑客

how... my... this is an ugly hack

这工作

    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;
    }

这篇关于如何改变" this.ShowInTaskBar"对于" form.ShowDialog()"同时保持开放?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆