首页 > 解决方案 > 打开从项目中特定表单继承的表单时,Visual Studio 崩溃

问题描述

我知道这可能是重复的,但我已经在网上搜索并尝试了我找到的所有和每一个解决方案,但无济于事......

我的项目中有一个自定义表单,称为ParentForm它是项目中大多数其他表单的父级,它上面有一些标准元素,如面板和计时器。

我对显示此表单、编辑其设计或代码没有任何问题。

但是每当我打开一个继承自它的表单时,它会打开一会儿(不响应你)然后visual studio立即崩溃,我认为这只是设计师首先,但现在,即使我打开表单的代码,同样发生!

我调整了一些父表单的代码,现在它停止崩溃了。但是现在,每当我打开它的子​​表单时,我都会得到这个:

在此处输入图像描述

ContaierPanel并且panel2是我在父表单上的两个面板,并且我认为它们没有问题,它们被用作子表单中的容器,它们的访问修饰符也是公共的。

这些问题似乎与父表单本身有关,但我已经删除了其中的每一行代码,这根本没有帮助,现在我遇到了您在上图中看到的错误。

我还将完整的项目上传到 Github,以防有人想查看代码,这里是链接

我在项目中使用材质皮肤

非常感谢您的帮助,截止日期前我没有太多时间,还有很多事情要做......谢谢


编辑:在代码中丢失了几个小时后,我终于发现了导致问题的代码部分:正如我之前所说,我在父表单上有一个名为 的计时器tmrCheckConnection,这是计时器的代码:

private void tmrCheckConnection_Tick(object sender, EventArgs e)
    {
        if (!Program.dbConnection.IsConnect())
        {
            if (!controlsAreDisabled)
            {
                disabledControls.Clear();

                foreach (Control c in this.Controls)
                {
                    if (c.Enabled)
                    {
                        disabledControls.Add(c);
                        c.Enabled = false;
                    }
                }
                controlsAreDisabled = true;
            }

            lblNoDBConnection.Enabled = true;
            lblNoDBConnection.Visible = true;
            this.Controls.SetChildIndex(lblNoDBConnection, 0);
        } else {
            if (controlsAreDisabled)
            {
                foreach (Control c in disabledControls)
                    c.Enabled = true;

                lblNoDBConnection.Visible = false;
            }
        }
    }

显然,错误发生在这里 >> Program.dbConnection.IsConnect() << 因为它还不是一个实例化的类,并且IsConnect()函数使用了它的一些未实例化的成员。

所以解决方案只是防止定时器代码在设计时运行,所以我试着把这个:

if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)
return;

在计时器代码的开头,它没有改变任何东西。

接下来,我尝试从计时器中删除事件处理程序,并在 Form_Load 中重新分配它,如下所示:

if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Runtime)
            tmrCheckConnection.Tick += tmrCheckConnection_Tick;

再一次,它没有帮助。

有任何想法吗?

哦,我删除了 github 存储库。

标签: c#.netvisual-studiowinformswindows-forms-designer

解决方案


推荐阅读