[英]Setting the namespace of a WinForms UserControl in VB.NET
您如何將您的 UserControls 定義為位於項目名稱空間下方的名稱空間中,即。 [RootNameSpace].[SubSectionOfProgram].Controls?
由於 camainc 的回答而進行編輯:我還有一個約束,即我必須將所有代碼都放在一個項目中。
編輯以完成問題:因為我懷疑不可能做我需要的事情,所以 camainc 的答案是最接近的解決方案。
如果您不希望控件位於單獨的項目中,只需將 Namespace 關鍵字添加到代碼文件的頂部即可。 例如,我在幾個項目中做過這樣的事情:
Imports System.ComponentModel
Namespace Controls
Friend Class FloatingSearchForm
'Your code goes here...
End Class
End Namespace
您將無法指定控件位於不同於為它們所屬的項目指定的根命名空間中。 VB 將簡單地將 append 指定為項目屬性 window 中指定的命名空間。 因此,如果您的整個項目是“AcmeCorporation.WidgetProgram”並且您將“Namespace Controls”添加到控件文件的頂部,則該控件將位於命名空間“AcmeCorporation.WidgetProgram.Controls”中。 無法使控件出現在“AcmeCorporation.SomeOtherProgram.Controls”命名空間中。
另請注意,如果您使用設計器編輯控件,則需要在設計器創建的隱藏部分 class 中添加 Namespace 關鍵字。 單擊解決方案資源管理器中的“顯示所有文件”按鈕,然后單擊控件旁邊的展開箭頭。 您應該會看到列出的“*.Designer.vb”文件。 將命名空間也添加到該文件中。 設計者將尊重此修改,您的項目現在應該可以無錯誤地編譯。 顯然,設計器部分 class 中指定的命名空間必須與 class 文件中指定的命名空間相同: 對於上面的示例:
Namespace Controls
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FloatingSearchForm
'Designer generated code
End Class
End Namespace
我不確定這是否是您所要求的,但我們就是這樣做的。
我們以一致的方式命名所有項目,用戶控件也不例外。 我們還使用項目設置 window 命名空間,盡管您可以通過項目 window 和代碼的組合來實現。
每個解決方案都有一個這樣的命名空間:
[CompanyName].[SolutionName].[ProjectName]
因此,我們的用戶控件通常位於名為“Controls”的項目中,該項目的命名空間為:
OurCompany.ThisSolution.Controls
如果我們有可能跨越多個不同解決方案的控件,我們只需像這樣命名它:
OurCompany.Common.Controls
然后,在我們的代碼中,我們將導入庫,或將項目添加到解決方案中。
Imports OurCompany
Imports OurCompany.Common
Imports OurCompany.Common.Controls
我們還將項目所在的文件夾命名為與命名空間相同,直到但不包括公司名稱(所有解決方案都假定在公司命名空間中):
\項目
\項目\我的解決方案
\Projects\MySolution\Controls
- 或者 -
\項目\
\項目\常見
\Projects\Common\Assemblies
\Projects\Common\Controls
等等
希望有幫助...
您的意思是您希望能夠在運行時(在代碼中)通過以下方式訪問用戶控件
[ProjectNamespace].[YourSpecialNamespace].Controls
而不是默認的
[ProjectNamespace].Controls
? 因為我不相信這是可能的。 如果我沒記錯的話,您的項目/應用程序的Controls
集合是框架內置的 - 您無法更改它。 正如camainc所指出的,您可以使用項目設置 window (或代碼)將控件本身放置在特定的命名空間中:
Namespace [YourSpecialNamespace]
Public Class Form1
[...]
End Class
End Namespace
當然,再想一想,我想您可以在命名空間中設計和構建自己的Controls
集合 - 也許作為內置集合的包裝器......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.