c#-尝试创建最小化的表单时出现*Exception

我的问题很简单.我有这个新表格,我只是编写以下代码:

    public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Resize += new EventHandler(Form1_Resize);

        this.WindowState = FormWindowState.Minimized;
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
        if (WindowState == FormWindowState.Minimized)
        {
            ShowInTaskbar = false;
        }
        else if (WindowState == FormWindowState.Normal)
        {
            ShowInTaskbar = true;
        }
    }
}

我希望此表单开始最小化,并且仅在未最小化表单时才显示任务栏图标.但是当我运行它时,我收到一个*Exception.我认为ShowInTaskbar = false正在调用resize方法.

解决方法:

将自动最小化放置在“ Load”事件中,而不是构造函数中.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Resize += new EventHandler(Form1_Resize);
        this.Load += new EventHandler(Form1_Load);

    }

    void Form1_Load(object sender, EventArgs e)
    {
        WindowState = FormWindowState.Minimized;
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
        if (WindowState == FormWindowState.Minimized)
        {
            ShowInTaskbar = false;
        }
        else if (WindowState == FormWindowState.Normal)
        {
            ShowInTaskbar = true;
        }
    }
}

我不完全确定为什么这可以防止堆栈溢出,但是一旦发现,我将立即更新答案.重现问题后,我已经对其进行了测试,可以确认它是否有效!

上一篇:C#-下拉列表大小设置未采用


下一篇:c#-以编程方式从wpf应用程序打开winform