不相关的运行时错误,包含未使用的类声明

本文关键字:声明 未使用 运行时错误 不相关 包含 | 更新日期: 2023-09-27 18:24:41

我一直在开发一个快速的WinForms程序。我发现了这个关于刷新ListBox的问题,我认为Brad Bruce的回答很有趣,尽管我知道绑定是解决这个问题的正确方法。因此,我尝试了他的继承ListBox的解决方案,并声明了一个类似的类(为了更容易阅读,修改了名称):

public class AustinListBox : ListBox
{
    public void AustinRefreshItems() 
    { 
        RefreshItems(); 
    }
}

请注意,在我键入此代码之前,我的代码已编译并运行良好。在声明了这个并且没有引用这个新类之后,我开始运行程序。。。BAM我收到一个运行时错误,说2个toolStripButtons(顺便说一句,它们是占位符,我对它们没有任何更改,也没有在任何地方使用)无法加载它们的图像。然而,默认图像和以前一样位于Form1.resx中。它也不允许我查看Form1的设计。

一个未使用的类声明在运行时与两个默认的toolStripbutton的映像有什么关系?如果我注释掉AustinListBox的7行代码,一切都会神奇地重新开始。

不相关的运行时错误,包含未使用的类声明

它也不允许我查看Form1的设计。

表单设计器要求正在设计的表单是文件中定义的第一个类。如果将类定义放在包含窗体类的代码文件的顶部,则设计器将无法工作。

为什么会出现运行时错误?编译器生成一个资源文件,其中包含StatusStrip按钮的图像。似乎将类放在表单类之前会阻止这些资源链接到程序集中,因此资源加载程序在运行时查找这些映像资源时会抛出异常。

只需将类定义放在表单定义下面、表单定义内部(如果合适)或单独的文件中即可。后者是公认的公共课程的最佳实践。

在这种情况下,由于您的类将Component子类化,因此应该将其放在一个单独的文件中。当您这样做时,它将在解决方案资源管理器中有一个不同的图标,将其表示为组件。它还将获得自己的.resx文件,您可以使用设计器向其中添加其他组件。