Pregunta

¿Cómo se definen sus UserControls como si estuvieran en un espacio de nombres debajo del espacio de nombres del proyecto, es decir?[RootNameSpace].[SubSectionOfProgram].Controles?

Editar debido a la respuesta de camainc: También tengo la restricción de tener todo el código en un solo proyecto.

Editar para finalizar la pregunta: Como sospechaba, no es posible hacer lo que necesitaba, por lo que la respuesta de camainc es la solución más cercana.

¿Fue útil?

Solución

No estoy seguro de si esto es lo que estás preguntando, pero así es como lo hacemos.

Colocamos espacios de nombres en todos nuestros proyectos de manera consistente, los controles de usuario no son diferentes.También creamos espacios de nombres usando la ventana de configuración del proyecto, aunque puedes hacerlo a través de una combinación de la ventana del proyecto y en código.

Cada solución obtiene un espacio de nombres como este:

[CompanyName].[SolutionName].[ProjectName]

Entonces, nuestros controles de usuario normalmente están en un proyecto llamado "Controles", que tendría un espacio de nombres de:

OurCompany.ThisSolution.Controls

Si tenemos controles que pueden abarcar varias soluciones diferentes, simplemente les asignamos el espacio de nombres así:

OurCompany.Common.Controls

Luego, en nuestro código importaremos la biblioteca o agregaremos el proyecto a la solución.

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

También asignamos el mismo nombre a las carpetas donde se encuentran los proyectos que al espacio de nombres, hasta el nombre de la empresa, pero sin incluirlo (se supone que todas las soluciones están en el espacio de nombres de la empresa):

\Proyectos
\Proyectos\MiSolución
\Proyectos\MiSolución\Controles

-- o --

\Proyectos\
\Proyectos\Común
\Proyectos\Comunes\Asambleas
\Proyectos\Comunes\Controles

etc.

Espero que ayude...

Otros consejos

Si no desea que los controles estén en un proyecto separado, simplemente puede agregar la palabra clave Namespace en la parte superior del archivo de código.Por ejemplo, he hecho algo como esto en varios proyectos:

Imports System.ComponentModel

Namespace Controls
   Friend Class FloatingSearchForm

      'Your code goes here...

   End Class
End Namespace

No podrá especificar que los controles estén en un espacio de nombres raíz diferente al especificado para el proyecto del que forman parte.VB simplemente agregará lo que usted especifique para el espacio de nombres al espacio de nombres especificado en la ventana de propiedades del proyecto.Entonces, si todo su proyecto es "AcmeCorporation.WidgetProgram" y agrega "Controles de espacio de nombres" en la parte superior de un archivo de control, el control estará en el espacio de nombres "AcmeCorporation.WidgetProgram.Controls".No es posible hacer que el control aparezca en el espacio de nombres "AcmeCorporation.SomeOtherProgram.Controls".

También tenga en cuenta que si está utilizando el diseñador para editar sus controles, debe agregar la palabra clave Namespace a la clase parcial oculta creada por el diseñador.Haga clic en el botón "Mostrar todos los archivos" en el explorador de soluciones, luego haga clic en la flecha de expansión al lado de su control.Debería ver un archivo "*.Designer.vb" en la lista.Agregue también el espacio de nombres a ese archivo.El diseñador respetará esta modificación y su proyecto ahora debería compilarse sin errores.Obviamente, el espacio de nombres especificado en la clase parcial del diseñador debe ser el mismo que el especificado en su archivo de clase.Para el ejemplo anterior:

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

      'Designer generated code

   End Class
End Namespace

¿Quiere decir que desea poder acceder a los controles de usuario en tiempo de ejecución (en código) a través de

[ProjectNamespace].[YourSpecialNamespace].Controls

en lugar del valor predeterminado de

[ProjectNamespace].Controls

?Porque no creo que eso sea posible.Si no me equivoco, el Controls La colección de su proyecto/aplicación está integrada en el marco; no puede cambiarla.Puede, como señaló camainc, usar la ventana (o código) de configuración del proyecto para colocar los controles en un espacio de nombres específico de esta manera:

Namespace [YourSpecialNamespace]

Public Class Form1

[...]

End Class

End Namespace

Por supuesto, pensándolo un poco más, supongo que podrías diseñar y construir tu propio Controls colección en su espacio de nombres, tal vez como un contenedor para el incorporado...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top