Einstellen des Namensraum eines WinForms Usercontrol in VB.NET
-
09-06-2019 - |
Frage
Wie definieren Sie Ihre Benutzersteuerelemente wie unter dem Projekt-Namespace in einem Namensraum zu sein, das heißt. [RootNamespace]. [SubSectionOfProgram] .Controls?
Bearbeiten aufgrund camainc Antwort:. Ich habe auch eine Einschränkung, dass ich die gesamten Code in einem Projekt haben muß
Bearbeiten Frage fertig zu stellen. Wie ich vermute, dass es nicht möglich ist, zu tun, was ich brauchte so camainc Antwort ist die nächste Lösung
Lösung
Ich bin mir nicht sicher, ob dies ist, was Sie fordern, aber das ist, wie wir es tun.
Wir Namespace alle unsere Projekte in einer konsistenten Art und Weise sind Benutzer Kontrollen nicht anders. Wir Namespace auch das Fenster Projekteinstellungen verwenden, obwohl Sie es durch eine Kombination aus Projektfenster tun konnten und im Code.
Jede Lösung erhält einen Namensraum wie folgt:
[CompanyName].[SolutionName].[ProjectName]
So sind unsere Benutzer steuert normalerweise in einem Projekt namens "Controls", die einen Namensraum haben würde:
OurCompany.ThisSolution.Controls
Wenn wir Kontrollen haben, die mehrere unterschiedliche Lösungen decken könnten wir es nur Namespace wie folgt:
OurCompany.Common.Controls
Dann in unserem Code werden wir die Bibliothek importieren, oder das Projekt zur Lösung hinzuzufügen.
Imports OurCompany
Imports OurCompany.Common
Imports OurCompany.Common.Controls
Wir nennen auch die Ordner, in denen die Projekte der gleiche wie der Namespace leben, bis zu, aber nicht einschließlich des Firmennamens (alle Lösungen sind davon ausgegangen, in der Gesellschaft Namensraum sein):
\ Projects
\ Projects \ MySolution
\ Projects \ MySolution \ Kontrollen
- oder -
\ Projects \
\ Projects \ Common
\ Projects \ Common \ Assemblies
\ Projects \ Common \ Kontrollen
etc.
Ich hoffe, das hilft ...
Andere Tipps
Wenn Sie nicht wollen, die Kontrollen in einem separaten Projekt sein, können Sie einfach die Namespace-Schlüsselwort-Datei in den Anfang der Codes hinzufügen. Zum Beispiel, ich habe so etwas wie dies in mehreren Projekten durchgeführt:
Imports System.ComponentModel
Namespace Controls
Friend Class FloatingSearchForm
'Your code goes here...
End Class
End Namespace
Sie können angeben, nicht, dass die Kontrollen in einem anderen Root-Namespace sind als die für das Projekt angegeben sie ein Teil sind. VB wird einfach anhängen, was Sie für den Namespace auf den Namespace in den Projekteigenschaften-Fenster angegeben angeben. Also, wenn Ihr gesamtes Projekt „AcmeCorporation.WidgetProgram“ ist und Sie fügen „Namespace Controls“ an die Spitze einer Steuerdatei, wird die Steuerung sein in dem Namensraum „AcmeCorporation.WidgetProgram.Controls“. Es ist nicht möglich, die Kontrolle erscheint in dem „AcmeCorporation.SomeOtherProgram.Controls“ Namespace zu machen.
Beachten Sie auch, dass, wenn Sie den Designer verwenden, um Ihre Kontrollen zu bearbeiten, müssen Sie das Namespace-Schlüsselwort zu der verborgenen Teil-Klasse von dem Designer erstellt hinzuzufügen. Klicken Sie auf „Alle Dateien anzeigen“ in der Lösung Explorer und klicken Sie auf den Pfeil erweitern neben Ihrer Kontrolle. Sie sollten eine „* .Designer.vb“ Datei aufgelistet. Fügen Sie den Namespace in diesem als auch Datei. Der Designer wird diese Änderung respektieren und Ihr Projekt sollte jetzt ohne Fehler kompiliert. Offensichtlich ist der Namespace in der Designer-Teilklasse angegeben wird, muss das gleiche wie die in Ihrer Klasse-Datei angegeben sein! Für das obige Beispiel:
Namespace Controls
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FloatingSearchForm
'Designer generated code
End Class
End Namespace
Haben Sie meinen Sie wollen in der Lage sein, Benutzersteuerung zur Laufzeit für den Zugriff auf (in Code) über
[ProjectNamespace].[YourSpecialNamespace].Controls
statt dem Standard von
[ProjectNamespace].Controls
? Weil ich glaube nicht, das ist möglich. Wenn mich nicht alles täuscht, wird die Controls
Sammlung Ihres Projekts / app Built-in von Rahmen - Sie können es nicht ändern können. Sie können, wie camainc erwähnt, verwenden Sie das Fenster Projekteinstellungen (oder Code) die Kontrollen selbst in einem bestimmten Namensraum zu platzieren so:
Namespace [YourSpecialNamespace]
Public Class Form1
[...]
End Class
End Namespace
Natürlich darüber nachzudenken einige mehr, nehme ich Sie könnten Ihre eigenen Controls
Sammlung in Ihrem Namensraum entwerfen und bauen - vielleicht als ein Wrapper für die eingebaute in einem ...