c# - 打开从项目中特定表单继承的表单时,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 存储库。
解决方案
推荐阅读
- javascript - 建议:单页应用架构问题
- python - 如何修复,元素
- cassandra - 出现错误:尝试进行增量修复时“无法混合顺序修复和增量修复”
- javascript - NPM 在 node_modules 下安装非根依赖项?
- javascript - 如何使 Javascript 代码分别为每个元素工作,以使用相同的 Javascript 代码在 HTML 中创建多个重复项
- r - 使用 R 包 rvest 从 transfermarkt 抓取
- java - 在组合框 java 中添加和选择项目时获得相同的 ActionEvent
- git - 如何避免 Gerrit 权限问题并将 GitHub 存储库迁移到 Gerrit?
- ssh - 无法使用 GNU 并行在多个节点上运行 PBS 脚本
- c# - 如何使用在其父控件上向下滑动的面板创建用户控件?