2012-01-18 19 views
5

Estoy utilizando VB 2008 Express pero esto probablemente se aplique a todos los entornos .net.Gestión de etiquetas en .net

Mi pregunta tiene que ver con las etiquetas que no hacen nada. No hay eventos, y su texto nunca cambia. Simplemente se sientan allí arriba de cuadros de texto y otros artilugios para que el usuario sepa para qué sirve cada doohickey. Ese es su trabajo completo. Sencillo. Sin código alguno. (Aparte del código escrito por el diseñador de formularios.)

¡Mi problema es que hay muchísimos! Mi aplicación tiene varias pestañas en el mismo formulario, y cada pestaña tiene muchos objetos y cada una tiene una etiqueta asociada. Como nunca me molesté en nombrarlos, ahora tengo una etiqueta con el nombre Label224. ¡Así es, 224 etiquetas! Se está poniendo ridículo. Cuando veo la ventana de propiedades, a veces deseo seleccionar un objeto por nombre usando el menú desplegable y me obligan a desplazarme mucho.

PREGUNTA: ¿Hay alguna manera de hacer que la gran cantidad de etiquetas sin nombre (o cualquier tipo de objeto que no se hace referencia en el código) sea menos molesto durante el desarrollo?

Podría cargarlos en el código, por supuesto. Eso estaría bien, pero es bueno diseñarlos gráficamente sin la prueba y el error de ejecutar el código para ver si el posicionamiento es correcto.

Respuesta

4

Un par de cosas.

Conjunto GenerateMember la propiedad de cada etiqueta en false:

label1.GenerateMember = False 

Esto evitará que la etiqueta aparezca en la vista de código cuadros combinados y IntelliSense.

Aparte de eso, solo tiene demasiados controles.

Mencionó "pestañas", en cuyo caso, puede intentar mover cada pestaña de cosas en un control de usuario separado, y luego solo está cargando un solo control de usuario para cada pestaña. No reduce el número de controles, pero lo hace un poco más manejable.

El otro "trabajo" de una etiqueta es proporcionar activación de control mnemotécnico para el siguiente control en el orden de tabulación. Si no está usando esto, puede intentar "hacer trampa" y deshacerse de todas las etiquetas juntas, y "pintar" la etiqueta al lado de cada control en el evento de pintura del contenedor. Puede poner la pantalla de la etiqueta en la propiedad de una etiqueta de control y pintar sobre eso. No necesariamente la mejor sugerencia.

Ejemplo:

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint 
    For Each c As Control In Me.Controls 
    If c.Tag IsNot Nothing Then 
     TextRenderer.DrawText(e.Graphics, c.Tag.ToString, Me.Font, _ 
          New Rectangle(c.Left - 100, c.Top, 100, c.Height), _ 
          Color.Black, Color.Empty, TextFormatFlags.VerticalCenter) 
    End If 
    Next 
End Sub 
+0

GenerateMember es mi respuesta. Créalo o no, no tenía ni idea de qué es lo que hace. Gracias, ya que ahora esto también me lleva a conocer la propiedad Modificadores. Soy autodidacta en .NET, (viniendo de VB6) y cada día aprendo más. – PaulOTron2000

3

Si usted tiene una gran cantidad de controles de cuadro de texto con las etiquetas adyacentes, se podría crear un control de usuario que consiste en tanto el cuadro de texto y la etiqueta. Puede agregar las propiedades que desee para personalizar el aspecto.

enter image description here

Este es un patrón de interfaz de usuario tan común, realmente creo VS debe venir con un control como este.

También significa que puede crear nuevos formularios más rápidamente porque solo tiene un control para agregar para cada campo de edición, en lugar de dos.

Aquí hay otro ejemplo de un control de usuario que tengo - esto es sólo dos etiquetas, pero el principio es el mismo:

enter image description here

Aquí está siendo utilizado varias veces en una forma:

enter image description here

En lugar de 18 etiquetas en el formulario, tengo 9 instancias de mi usercontrol.

+0

Me parece recordar hace LOOOOONG, una versión anterior de MS Access permitiría al desarrollador asociar etiquetas con cuadros de texto en un formulario como ese, con la etiqueta predeterminada al nombre de un campo de base de datos con el que se asociaba el cuadro de texto. Gran parte de Access fue menos que deseable, pero esta característica tenía sentido. – PaulOTron2000

+0

Tengo la sensación de que VB podría haber tenido lo mismo. Pero no he usado VB durante 15 años o más, así que podría estar imaginándoselo. –

+0

No a menos que estuviera en VB1. Me salteé VB1 pero utilicé todas las versiones de VB2 a VB6. (Comenzando con GW Basic, luego en QuickBasic, que fue bastante impresionante en su día). ¡Oh, Dios mío, soy viejo! Y supongo que podrías decir que soy bastante básico. – PaulOTron2000