Compartir a través de


Información general sobre editores de tipos de interfaz de usuario

Puede proporcionar una experiencia en tiempo de diseño personalizada para tipos de propiedad complejos mediante la implementación de un editor de tipos de interfaz de usuario.

Mostrar y editar tipos personalizados

Cuando expone un tipo personalizado como una propiedad, dispone de tres formas de editar el valor de la propiedad en un objeto PropertyGrid:

  • Puede editar la propiedad directamente como una cadena. Para ello es necesario un objeto TypeConverter para su tipo personalizado. Para obtener más información, vea Cómo: Implementar un convertidor de tipos.

  • Puede editar la propiedad con una interfaz de usuario desplegable. Esta opción resulta especialmente útil para propiedades que se pueden establecer con un solo clic.

  • Puede editar la propiedad con un cuadro de diálogo modal. Si su propiedad resulta particularmente compleja, quizá sea necesario un cuadro de diálogo completo para editarla correctamente.

Para habilitar la edición con un solo clic o con un cuadro de diálogo modal, deberá implementar un editor de tipos de interfaz de usuario con el fin de que interactúe con un objeto PropertyGrid.

Editores desplegables

Los editores desplegables son ideales para los tipos que se pueden establecer con un solo clic. Por ejemplo, puede editar las propiedades Dock y BackColor de la clase Control en un objeto PropertyGrid con un editor desplegable.

Para obtener acceso a un editor desplegable de tipos de interfaz de usuario, haga clic en el botón de flecha (Propiedades de la flecha abajo de una ventana) que aparece junto a la entrada de la propiedad seleccionada en un objeto PropertyGrid. Aparece su interfaz de usuario personalizada, asociada al objeto PropertyGrid. La parte superior de su ventana se sitúa a lo largo de la parte inferior de la entrada de la propiedad, y su ancho coincide con el de la entrada de la propiedad. Esta ventana del editor también debe cerrarse después de que el usuario realice una selección. Su implementación debe llamar al método DropDownControl para establecer la posición y el tamaño de la ventana del editor de tipos de interfaz de usuario en el entorno de diseño, y al método CloseDropDown para cerrar la ventana.

Editores de cuadros de diálogo modales

Los editores modales son útiles para tipos que requieren una Interfaz de usuario totalmente interactiva. Por ejemplo, los editores de colecciones como el Editor de la colección TabPage de TabControl o el cuadro de diálogo Editar columnas del control DataGridView son editores modales.

Para obtener acceso a un editor modal de tipos de interfaz de usuario, haga clic en el botón de puntos suspensivos (Captura de pantalla de VisualStudioEllipsesButton) que aparece junto a la entrada de la propiedad seleccionada en un objeto PropertyGrid. Aparece el cuadro de diálogo modal, con el que el usuario puede interactuar como si se tratara de un cuadro de diálogo típico. Su implementación debe llamar al método ShowDialog para establecer la posición y el tamaño del cuadro de diálogo en el entorno de diseño.

Implementar un editor de tipos con interfaz de usuario

Para implementar un editor de tipos de interfaz de usuario personalizado, debe realizar las tareas siguientes, como mínimo:

  • Defina una clase que se derive de UITypeEditor.

  • Reemplace el método GetEditStyle para informar al objeto PropertyGrid del tipo de estilo que utilizará el editor.

  • Reemplace el método EditValue para controlar la interfaz de usuario, el procesamiento de los datos proporcionados por el usuario y la asignación de valores.

Puede ampliar la compatibilidad adicional para dibujar la representación de un valor en un objeto PropertyGrid mediante las tareas siguientes:

  • Reemplace GetPaintValueSupported para indicar que el editor permite que se muestre la representación del valor.

  • Reemplace PaintValue para implementar la vista de la representación del valor.

  • Reemplace el método de constructor UITypeEditor si el editor debería tener comportamiento de inicialización.

Nota

Los editores de tipos de interfaz de usuario se implementan con frecuencia mediante tipos del espacio de nombres System.Windows.Forms, aunque no es un requisito. En .NET Framework, los editores de tipos de interfaz de usuario estándar derivan de UITypeEditor.

Derivar de la clase UITypeEditor

Su editor de tipos de interfaz de usuario personalizado debe derivar de la clase UITypeEditor. Defina un constructor predeterminado si su editor de tipos de interfaz de usuario requiere una inicialización especial.

Reemplazar el método GetEditStyle

Cuando selecciona un componente o un control en el diseñador, se redibuja la ventana Propiedades con los valores de propiedad del componente o control seleccionados. Cuando selecciona una propiedad, el entorno de diseño consulta al método GetEditStyle para determinar cómo debe representarse la entrada de la propiedad.

Su reemplazo devuelve un valor de la enumeración UITypeEditorEditStyle para comunicar el estilo apropiado del editor de tipos de interfaz de usuario.

En la siguiente tabla se muestra el comportamiento asociado a cada valor UITypeEditorEditStyle.

Nombre del miembro

Comportamiento

None

No proporciona ningún componente interactivo de interfaz de usuario. Se utiliza un objeto TypeConverter adecuado para convertir una entrada de cadena en un valor de propiedad.

DropDown

Muestra un botón de flecha abajo (Propiedades de la flecha abajo de una ventana) en la entrada de la propiedad. La interfaz de usuario se hospeda en una ventana desplegable.

Modal

Muestra un botón de puntos suspensivos (Captura de pantalla de VisualStudioEllipsesButton) en la entrada de la propiedad. La interfaz de usuario es un cuadro de diálogo modal.

Reemplazar el método EditValue

El método EditValue muestra la interfaz de usuario y establece para la propiedad el valor seleccionado por el usuario.

Editor desplegable

Para un editor desplegable de tipos de interfaz de usuario, consulta la interfaz IWindowsFormsEditorService a un proveedor de servicios. Este servicio proporciona información de posición y tamaño para la interfaz de usuario. Su interfaz de usuario se implementará normalmente como Control. Su implementación de EditValue crea una instancia de este control, la inicializa con el valor de propiedad actual y después la pasa al método DropDownControl para que el entorno de diseño la ejecute. Cuando el usuario ha seleccionado un nuevo valor para la propiedad, su implementación de EditValue cierra la interfaz de usuario llamando a CloseDropDown. El valor devuelto por la implementación EditValue se convierte en el nuevo valor de propiedad que se muestra en un objeto PropertyGrid.

Editor modal

Para un editor modal de tipos de interfaz de usuario, consulta la interfaz IWindowsFormsEditorService a un proveedor de servicios. Este servicio proporciona información de posición para su cuadro de diálogo. Su interfaz de usuario se implementará normalmente como una clase derivada de Form. Su implementación de EditValue crea una instancia de este formulario, la inicializa con el valor de propiedad actual y después la pasa al método ShowDialog para que el entorno de diseño la ejecute. Si el valor devuelto por esta llamada es OK, recuperará el nuevo valor de propiedad del formulario y lo utilizará como valor devuelto. El valor devuelto de su implementación EditValue se convierte en el nuevo valor de propiedad que se muestra en un objeto PropertyGrid.

Parámetro ITypeDescriptorContext

El método EditValue recibe un parámetro ITypeDescriptorContext, que puede utilizar para consultar la información contextual sobre el entorno de diseño. Con este parámetro puede tener acceso a los miembros siguientes:

Proporcionar una representación gráfica del valor de la propiedad

Puede mostrar una representación gráfica del valor de su propiedad si reemplaza el método PaintValue. Puede utilizar el parámetro PaintValueEventArgs que se proporciona para dibujar la representación en un pequeño rectángulo situado en la parte izquierda de la entrada de la propiedad en un objeto PropertyGrid.

Nota

Asegúrese de mantener su representación gráfica dentro de los límites definidos por la propiedad Bounds del parámetro PaintValueEventArgs.

Reemplace el método GetPaintValueSupported para devolver true con el fin de avisar al entorno de diseño de que su editor de tipos de interfaz de usuario dibuja una representación personalizada de su valor.

Vea también

Tareas

Cómo: Crear un editor de tipos de interfaz de usuario

Cómo: Crear un control de formularios Windows Forms que aproveche las características en tiempo de diseño

Referencia

UITypeEditorEditStyle

IWindowsFormsEditorService

Otros recursos

Editores de tipos de interfaz de usuario