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

War es hilfreich?

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 ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top