在網上搜索了N久都沒看到幾篇解決的文章,最后在不懈的努力下終於解決了,所以決定寫下解決方法方便以后遇到同樣問題的朋友:
其實這個錯誤的主要問題就是沒有找到需要的資源文件(該文件為Resources.resx),
引用該文件的地方就是
System.Resources.ResourceManager manager = new System.Resources.ResourceManager("×××.Resources", typeof(Resources).Assembly);
而導致錯誤的原因就是"×××.Resources"的配置錯誤
解決方法:首先查看工程中時候存在Resources.resx相關的文件,
找到它在工程中的位置(不如說一般都是在:工程名.Properties 命名空間下),
最后更改配置為new System.Resources.ResourceManager("工程名.Properties.Resources", typeof(Resources).Assembly);
續:
我這里在舉個詳細的例子,以便能夠更明白哈
首先,一個容器(不管是Form,或是Panel也好),如果與其配套一個資源文件(以后綴名為.resx),則這2個文件應是在同一個命名空間下,才能相互使用
舉個最特殊的例子
比如說一個工程名叫Test.Tname
其下有一個文件夾叫aaa(文件夾名字隨便,沒有關系)
文件夾aaa下有一個類文件叫Form1.cs,其命名空間為:Test.Tname(注意:命名空間才是重要的位置信息)
現在也有一個資源文件叫Form1.resx
(默認此資源文件是沒有問題的,但是在特別的情況下,此文件就不會再正確的位置,導致出現如題的異常信息,比如說我反編譯一個工程,自動生成的資源文件的位置就有問題)。
在Form1.cs中有句代碼是需要資源文件的
ResourceManager manager = new ResourceManager(typeof(Test.Tname.Form1));
這里就注意了,如果Form1.cs類文件與Form1.resx資源文件是分開的話,
那么Form1.resx資源文件應放在哪個地方,程序才能找到他呢?
首先我們看哈Form1.cs類文件的命名空間為Test.Tname。
而資源文件Form1.resx中並沒有命名空間的描述,所以只有靠位置來表示
再看下我們的工程名稱:Test.Tname很好,它跟Form1.cs類文件的命名空間相同
所以我們就把Form1.resx資源文件放在工程的根目錄下面
問題解決了,呵呵
其實我覺得最重要的問題就是類文件中可以有namespace來描述位置
而資源文件中並沒有這行代碼,只能靠真正的位置,這才是關鍵