Pergunta

Como você define seus UserControls como estando em um namespace abaixo do namespace do projeto, ou seja.[RootNameSpace].[SubSectionOfProgram].Controles?

Editar devido à resposta do camainc: Também tenho a restrição de ter todo o código em um único projeto.

Edite para finalizar a pergunta: Como eu suspeitava, não era possível fazer o que eu precisava, então a resposta do camainc é a solução mais próxima.

Foi útil?

Solução

Não tenho certeza se é isso que você está perguntando, mas é assim que fazemos.

Colocamos nomes em todos os nossos projetos de maneira consistente, os controles de usuário não são diferentes.Também criamos namespace usando a janela de configurações do projeto, embora você possa fazer isso por meio de uma combinação da janela do projeto e no código.

Cada solução recebe um namespace como este:

[CompanyName].[SolutionName].[ProjectName]

Portanto, nossos controles de usuário normalmente estão em um projeto chamado "Controles", que teria um namespace de:

OurCompany.ThisSolution.Controls

Se tivermos controles que podem abranger várias soluções diferentes, apenas o nomeamos da seguinte forma:

OurCompany.Common.Controls

Então, em nosso código iremos importar a biblioteca, ou adicionar o projeto à solução.

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

Também nomeamos as pastas onde os projetos residem da mesma forma que o namespace, até, mas não incluindo, o nome da empresa (presume-se que todas as soluções estejam no namespace da empresa):

\Projetos
\Projetos\MinhaSolução
\Projetos\MinhaSolução\Controles

-- ou --

\Projetos\
\Projetos\Comum
\Projetos\Comuns\Assemblies
\Projetos\Common\Controles

etc.

Espero que ajude...

Outras dicas

Se não quiser que os controles estejam em um projeto separado, basta adicionar a palavra-chave Namespace ao topo do arquivo de código.Por exemplo, fiz algo assim em vários projetos:

Imports System.ComponentModel

Namespace Controls
   Friend Class FloatingSearchForm

      'Your code goes here...

   End Class
End Namespace

Você não poderá especificar que os controles estão em um namespace raiz diferente daquele especificado para o projeto do qual fazem parte.O VB simplesmente anexará tudo o que você especificar para o namespace ao namespace especificado na janela de propriedades do projeto.Portanto, se todo o seu projeto for "AcmeCorporation.WidgetProgram" e você adicionar "Namespace Controls" ao topo de um arquivo de controle, o controle estará no namespace "AcmeCorporation.WidgetProgram.Controls".Não é possível fazer o controle aparecer no namespace "AcmeCorporation.SomeOtherProgram.Controls".

Observe também que se você estiver usando o designer para editar seus controles, será necessário adicionar a palavra-chave Namespace à classe parcial oculta criada pelo designer.Clique no botão "Mostrar todos os arquivos" no gerenciador de soluções e, em seguida, clique na seta de expansão ao lado do seu controle.Você deverá ver um arquivo "*.Designer.vb" listado.Adicione o Namespace a esse arquivo também.O designer respeitará esta modificação e seu projeto agora deverá ser compilado sem erros.Obviamente, o namespace especificado na classe parcial do designer deve ser o mesmo especificado no seu arquivo de classe!Para o exemplo acima:

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

      'Designer generated code

   End Class
End Namespace

Você quer dizer que deseja acessar os controles do usuário em tempo de execução (no código) via

[ProjectNamespace].[YourSpecialNamespace].Controls

em vez do padrão de

[ProjectNamespace].Controls

?Porque não acredito que isso seja possível.Se não me engano, o Controls A coleção do seu projeto/aplicativo é incorporada pela estrutura - você não pode alterá-la.Você pode, como observou o camainc, usar a janela de configurações do projeto (ou código) para colocar os próprios controles em um namespace específico da seguinte maneira:

Namespace [YourSpecialNamespace]

Public Class Form1

[...]

End Class

End Namespace

Claro, pensando um pouco mais sobre isso, suponho que você poderia projetar e construir seu próprio Controls coleção em seu namespace - talvez como um wrapper para o interno ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top