Question

Comment définissez-vous vos contrôles utilisateur comme étant dans un espace de noms situé sous l'espace de noms du projet, c'est-à-dire. [RootNameSpace]. [SubSectionOfProgram] .Controls?

Editer en raison de la réponse de Camainc: je suis également contraint de devoir disposer de tout le code dans un seul projet.

Modifier pour finaliser la question: Comme je soupçonnais qu'il n'était pas possible de faire ce que je demandais, la réponse de camainc est la solution la plus proche.

Était-ce utile?

La solution

Je ne sais pas si c'est ce que vous demandez, mais c'est comme cela que nous procédons.

Nous appelons tous nos projets de manière cohérente, les contrôles utilisateur ne sont pas différents Nous avons également un espace de noms en utilisant la fenêtre de configuration du projet, bien que vous puissiez le faire en combinant la fenêtre de projet et le code.

Chaque solution obtient un espace de noms similaire à celui-ci:

[CompanyName].[SolutionName].[ProjectName]

Nos contrôles utilisateur se trouvent donc normalement dans un projet appelé "Contrôles". qui aurait un espace de noms de:

OurCompany.ThisSolution.Controls

Si nous avons des contrôles qui peuvent recouvrir plusieurs solutions différentes, nous le mettons en espace de noms comme suit:

OurCompany.Common.Controls

Ensuite, dans notre code, nous allons importer la bibliothèque ou ajouter le projet à la solution.

Imports OurCompany
Imports OurCompany.Common
Imports OurCompany.Common.Controls

Nous nommons également les dossiers dans lesquels les projets vivent de la même manière que l'espace de noms, mais n'incluant pas le nom de la société (toutes les solutions sont supposées se trouver dans l'espace de noms de la société):

\ Projets
\ Projets \ MySolution
\ Projets \ MySolution \ Contrôles

- ou -

\ Projets \
\ Projets \ Communs
\ Projets \ Commun \ Assemblies
\ Projets \ Commun \ Contrôles

etc.

J'espère que ça aide ...

Autres conseils

Si vous ne souhaitez pas que les contrôles fassent partie d'un projet séparé, vous pouvez simplement ajouter le mot clé Namespace en haut du fichier de code. Par exemple, j'ai fait quelque chose comme ça dans plusieurs projets:

Imports System.ComponentModel

Namespace Controls
   Friend Class FloatingSearchForm

      'Your code goes here...

   End Class
End Namespace

Vous ne pourrez pas spécifier que les contrôles se trouvent dans un espace de noms racine différent de celui spécifié pour le projet dont ils font partie. VB ajoutera simplement ce que vous spécifiez pour l'espace de noms à l'espace de noms spécifié dans la fenêtre des propriétés du projet. Dans ce cas, si votre projet dans son ensemble est "AcmeCorporation.WidgetProgram". et vous ajoutez " Namespace Controls " en haut d'un fichier de contrôle, le contrôle se trouvera dans l'espace de noms "AcmeCorporation.WidgetProgram.Controls". Il n’est pas possible d’afficher le contrôle dans le champ "AcmeCorporation.SomeOtherProgram.Controls". espace de noms.

Notez également que si vous utilisez le concepteur pour modifier vos contrôles, vous devez ajouter le mot clé Namespace à la classe partielle masquée créée par le concepteur. Cliquez sur le bouton "Afficher tous les fichiers". bouton dans l’explorateur de solutions, puis cliquez sur la flèche d’agrandissement en regard de votre contrôle. Vous devriez voir un " *. Designer.vb " fichier répertorié. Ajoutez également l’espace de noms à ce fichier. Le concepteur respectera cette modification et votre projet devrait maintenant compiler sans erreur. Bien évidemment, l'espace de nom spécifié dans la classe partielle du concepteur doit être le même que celui spécifié dans votre fichier de classe! Pour l'exemple ci-dessus:

Namespace Controls
   <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
   Partial Class FloatingSearchForm

      'Designer generated code

   End Class
End Namespace

Voulez-vous dire que vous voulez pouvoir accéder aux contrôles utilisateur au moment de l'exécution (en code) via

  

[ProjectNamespace]. [YourSpecialNamespace] .Controls

plutôt que la valeur par défaut de

  

[ProjectNamespace] .Controls

? Parce que je ne crois pas que ce soit possible. Si je ne me trompe pas, la collection Controls de votre projet / application est intégrée au framework - vous ne pouvez pas le changer. Comme vous pouvez le constater, vous pouvez utiliser la fenêtre de configuration du projet (ou son code) pour placer les contrôles eux-mêmes dans un espace de nom spécifique:

  

Espace de noms [YourSpecialNamespace]

     

Classe publique Form1

     

[...]

     

Classe de fin

     

Espace de noms de fin

Bien sûr, en y réfléchissant un peu plus, je suppose que vous pourriez concevoir et construire votre propre collection Controls dans votre espace de noms - peut-être comme un wrapper pour celui intégré ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top