場合によっては、C# プロジェクトに別の C# プロジェクトに属するユーザー コントロールが含まれており、それを移動する必要があります。そのユーザー コントロールを単純にコピーして貼り付けようとすると、名前空間エラーが発生します。プロジェクト 1 の名前空間が でnamespace General.Category1.Controls
、プロジェクト 2 の名前空間が であるとしますnamespace General.Category2.Controls
。
私が最初に行った手順は次のとおりです。
1)プロジェクト 1 からプロジェクト 2 にコントロール ( .cs
、designer.cs
およびファイルを含む) をコピーして貼り付けます。.resx
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)General.Category2.controls
akaの新しい名前空間に一致するように宣言を変更します。private General.Category2.Controls UserControl userControl1;
designer.cs
通常、ファイルを編集することは推奨されていないため、ファイルが更新されなかった理由がわかりませんdesigner.cs
。InitializeComponent()
ただし、実際のファイル自体に記載されているメソッドに触れない限り、それらを変更しても問題ないかもしれません。
designer.cs
結論として、すべてが自動的に更新されないのはなぜですか? このコントロールがどこで使用されているかを知り、私が行ったように自分で宣言を更新するという実際の答えはありますか?
[編集]: 最初の 2 つの手順は、コントロール自体 (.cs
および.designer.cs
ファイル) 用です。3 番目のステップは、コントロールが配置されたフォームに関連付けてからコピーすることです。これは、まだ古い名前空間を使用しているためです。そのため、すべてのフォーム.designer.cs
ファイルも変更する必要があります。