這個問題讓我撓了撓頭!我會盡可能簡潔。設計師強制將資源嵌入到表單中,而不是使用Resources.resx?
在高水平:
的問題是,雖然項目工作正常,代碼看起來不錯。每當我編輯和構建某些表單時,Visual Studio都會以非常不希望的方式重寫*.Designer.cs
文件。
我相當確信這些*.Designer.cs
文件在過去未被編輯(特別是自動生成的部分)。
更詳細:
我們的項目使用了自定義的控制,其中一些來自PictureBox
繼承。在存在這些控件的窗體上,如果我查看*.Designer.cs
文件,我可以看到未設置Image
屬性,或者Image
屬性指的是存儲在項目的resx文件中的圖像,如下所示,這樣很好,很好。
this.customButton.Image = global::MyProject.Properties.Resources.buttonImage;
但是,如果我只是通過增加另一個控制修改此表(將另一個按鈕拖到形式)和建設項目,Visual Studio中廣泛編輯MyForm.Designer.cs
和MyForm.resx
文件,即使是在窗體上存在的控件沒有被觸及。看來,它嵌入在MyForm.resx
文件由控制所需的所有圖像,然後是指他們在MyForm.Designer.cs
如下:
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MyForm));
this.customButton.Image = ((System.Drawing.Image)(resources.GetObject("customButton.Image")));
這顯然不是我想要的。爲什麼Visual Studio希望表單現在使用本地資源,而不是嵌入在項目的Resources.resx
文件中的表單,因爲它很樂意在表單修改之前進行操作?如果我去設計師,查看customButton
的屬性,並嘗試將Image屬性設置爲項目資源文件中的圖像,但允許它,但在下一次單擊時,它將立即恢復到嵌入的本地引用在MyForm.resx中。
任何想法爲什麼會發生這種情況?