有時,C#項目將在它屬於另一個C#項目中的用戶控件,我將不得不將其移動。試圖簡單地將該用戶控件複製粘貼到命名空間錯誤的結果上。假設項目1的命名空間爲namespace General.Category1.Controls
,項目2的命名空間爲namespace General.Category2.Controls
。複製用戶控制
的步驟我最初採取是:
1)複製+粘貼控制(包括.cs
,designer.cs
和.resx
文件)項目1到項目2
2)更改命名空間項目2的namespace General.Category2.Controls
在建設時這一點上,我從該副本+粘貼之前,使用此控件的形式獲得了額外的錯誤,狀態'The type of namespace name 'UserControl1' does not exist in namespace 'General.Category1.Controls' (are you missing an assembly reference?)
。事實證明,designer.cs
表單文件在複製+粘貼後沒有更新到正確的名稱空間。
於是我新增加一個額外的步驟:
3)更改聲明,以配合又名private General.Category2.Controls UserControl userControl1;
我很困惑,爲什麼designer.cs
文件不會已經更新的General.Category2.controls
新的命名空間因爲通常不建議編輯designer.cs
文件。但是,再次,也許可以修改它們,只要你不觸及InitializeComponent()
方法,因爲它在實際文件本身中聲明。
總之,爲什麼所有的designer.cs
不自動更新?是否知道在何處使用此控件的實際答案,並按照我所做的更新自己的聲明?
[編輯]:前兩步是爲控制本身(它是.cs
和.designer.cs
文件)。第三步是在複製之前將控件置於其中的任何表單,因爲它仍在使用舊的名稱空間,所以必須更改所有.designer.cs
文件。
你是如何引用用戶控件是這是一個Web應用程序或Windows應用程序..?在它是一個Web應用程序,你可以顯示你如何在.aspx文件中引用它? – MethodMan
而不是像這樣反覆複製和粘貼它們,爲什麼不製作一個控制庫項目和參考? – Muckeypuck
@MethodMan這是一個Windows應用程序。 – McRealz