簡體   English   中英

將用戶控件從一個項目復制到同一解決方案中的另一個項目

[英]Copy User Control from one project to another within same solution

有時,一個 C# 項目中會有一個屬於另一個 C# 項目的用戶控件,我必須將它移過去。 試圖簡單地復制 + 粘貼用戶控制會導致命名空間錯誤。 假設項目 1 的命名空間為namespace General.Category1.Controls ,項目 2 的命名空間為namespace General.Category2.Controls

我最初采取的步驟是:

1)從項目 1 到項目 2 復制 + 粘貼控件(包括.csdesigner.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;新命名空間private General.Category2.Controls UserControl userControl1;

我很困惑為什么designer.cs文件不會更新它,因為通常不建議編輯designer.cs文件。 但話又說回來,也許可以修改它們,只要您不觸及實際文件中聲明的InitializeComponent()方法。

總之,為什么所有的designer.cs沒有自動更新? 是否知道在哪里使用此控件並像我所做的那樣自己更新聲明的實際答案?

[編輯]:前兩個步驟是針對控件本身的(它是.cs.designer.cs文件)。 第 3 步是與任何在復制之前放置控件的表單相關聯,因為它仍在使用舊命名空間,因此所有表單.designer.cs文件也必須更改。

到過那里 ! 我不為此使用復制粘貼。 在 VS-2017 中,可以將 UserControl1 復制到另一個項目,如下所示:

  • 在 Windows 中:將 UserControl1.cs、.designer.cs 和 .resx 復制到您的新項目目錄中
  • 在 VS 中:在解決方案資源管理器中右鍵單擊您的項目,將其設置為啟動項目

  • 在解決方案資源管理器中右鍵單擊新項目,然后選擇添加現有項目

  • 現在,在文件框中選擇UserControl1.cs文件

  • 等待,解決方案資源管理器將注冊其他文件,更改符號
  • 在 VS 中,打開UserControl1.designer.cs .. 將命名空間更改為新的項目命名空間
  • 在 VS 中,打開UserControl1.cs,將命名空間更改為新的項目命名空間

在這一步之后,重建你的新項目。 轉到表單設計並打開工具箱。 Toolbox 將顯示您的 UserControl。

請注意,如果您將控件移動到新的 Framework 或 Core 類庫中,請考慮到 WinForms 尚未被引用! 在使用我上面的提示添加現有項目之前,請確保添加對 System.Windows.Forms 的引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM