Red de conocimientos turísticos - Conocimientos sobre calendario chino - Desarrollar controles personalizados de Windows usando VB.NET

Desarrollar controles personalizados de Windows usando VB.NET

Prefacio

La compatibilidad con componentes de Microsoft&Visual Basic® siempre ha sido un importante punto de venta, por lo que los desarrolladores de software de terceros han desarrollado varias características nuevas (también hay una. pocos controles no visuales) para que los programadores de Visual Basic puedan elegir. Esta forma especial de desarrollo de Visual Basic ha creado innumerables controles de terceros: algunos son software gratuito y otros ahora pueden incluso usar Visual Basic directamente para desarrollar los suyos propios. componentes visuales/no visuales Como resultado, la cantidad de componentes ha crecido rápidamente y una gran cantidad de ellos están diseñados por programadores (o equipos de desarrollo) para sus propias tareas de desarrollo.

Tenga en cuenta que Microsoft. Los controles ActiveX que usted o su equipo de desarrollo compraron en el pasado a menudo se pueden trasplantar directamente al entorno Microsoft NET sin modificarlos ni reescribirlos. Específicamente, simplemente ingrese al entorno Microsoft Visual Studio® menú Personalizar caja de herramientas) o utilice la utilidad NET framework Aximp exe (importador de controles ActiveX) para permitir que la aplicación NET llame a controles ActiveX ya preparados. Pero una vez que un determinado control no funcione correctamente en el entorno NET, su autor probablemente debería hacerlo. considere actualizar el control. Por lo tanto, para utilizar el control ActiveX de terceros adquirido normalmente en el entorno NET, debe ir al sitio web del desarrollador para ver si no hay una versión actualizada o una versión NET en la programación NET. En todo el mundo, la demanda de componentes de interfaz de usuario personalizados todavía existe, pero su proceso de creación es diferente. Este artículo explorará dos preguntas: ¿Por qué crear sus propios controles de Microsoft Windows? ¿En qué se diferencia el desarrollo de controles en Visual Basic NET de las versiones anteriores?

2. ¿Por qué desarrollar tu propio control? Para limitar el tipo de texto del control TextBox de Windows Forms, puede agregar el controlador de eventos KeyPress del control en el código del formulario para interceptar las pulsaciones de teclas de cada usuario y verificar si el carácter correspondiente a la tecla puede ingresar al TextBox Private Sub TextBox _KeyPress(ByVal remitente como objeto _ ByVal e como sistema Windows Forms KeyPressEventArgs) _ Handles TextBox KeyPress If Not Char IsDigit(e KeyChar) Then e Handled = True Else e Handled = False End If End Sub Tenga en cuenta que confiar simplemente en capturar eventos de pulsación de teclas no puede garantizar que Se ingresa el TextBox. El texto es todo numérico porque los usuarios a veces pegan caracteres en el TextBox a través del portapapeles en lugar de escribir caracteres directamente en el TextBox. Además, el valor inicial del texto del TextBox puede contener algunos otros eventos como TextChanged. Es posible que pueda capturar más. Hay muchas entradas ilegales, pero prefiero usar los eventos Validating o Leave. Solo verifican la validez de los caracteres del TextBox después de que el usuario abandona el control de entrada. de

La respuesta instantánea a la entrada del usuario le permite ingresar primero una cadena de texto con infracciones menores a través del portapapeles, como pegar en un cuadro de entrada que prohíbe espacios, y luego corregir manualmente los caracteres infractores en el cuadro de entrada. agregue manualmente el código del controlador de eventos al control. Pero, ¿aún se sentirá tan relajado cuando se enfrente a tareas de programación más complejas, como verificar la legalidad de los caracteres en una dirección postal o el número VIN (número de identificación del vehículo) de un automóvil? En este punto, querrá utilizar el mismo controlador de eventos para múltiples formularios o incluso múltiples proyectos o proporcionárselo a otros miembros del equipo de desarrollo para que lo compartan. Extraiga el fragmento de código del formulario junto con las instrucciones de instalación y controle la publicación de reglas. juntos es el comienzo de una pesadilla. Afortunadamente, puede evitar esta pesadilla publicándolo junto con un control personalizado, porque la interfaz de usuario y el código relacionado ahora están en componentes separados. La liberación de fragmentos de código es relativamente más fácil. Los componentes también son más convenientes para actualizar. Solo necesita lanzar una nueva versión del componente. Ya no es necesario publicar nuevos fragmentos de código a través de varios canales para que los programadores sobrescriban manualmente el código original.

3. ¿Cómo ha cambiado la herencia el desarrollo de los controles? El desarrollo de controles en NET es muy diferente de Visual Basic. La razón fundamental es que NET introdujo la herencia. En Visual Basic, solo puede usar controles o hacer referencia directamente a controles ya preparados para lograr varias funciones, por ejemplo. mencionado anteriormente Para crear un cuadro de entrada de texto, necesita crear un nuevo control ActiveX y agregarle un TextBox. Tenga en cuenta que la gente generalmente llama a esta idea de programación un contenedor o una delegación de clases que no son de control utilizadas para simular el mecanismo de herencia en Visual. Básico también se puede usar con esta idea, el control ActiveX recién creado no obtendrá automáticamente algunas propiedades de TextBox (como la propiedad de Texto) como desea. Estas propiedades solo pueden implementarse mediante su codificación. mucho código para garantizar que TextBox siempre ocupe todo el formulario, aún debe diseñar un controlador de eventos de cambio de tamaño para el nuevo control. Por supuesto, después de algunos problemas, siempre completará la tarea de diseño del control. mencionar que el asistente de interfaz de control ActiveX puede reducir su carga. Pero en el entorno NET, toda la tarea es La idea de implementación se vuelve completamente diferente. La herencia evita cierta duplicación de código en el desarrollo de controles porque permite que los controles NET obtengan directamente la funcionalidad. de cualquier otro control Por ejemplo, para crear su propio control TextBox, puede heredar un control TextBox existente en lugar de UserControl. El nuevo control hereda toda la funcionalidad del control de clase base, por lo que solo necesita codificar la funcionalidad. que no se encuentra en el control de clase base. Aquí hay un ejemplo práctico. El siguiente código crea un control TextBox personalizado que solo permite al usuario ingresar caracteres numéricos. Tenga en cuenta que para ejecutar este código solo necesita crear un nuevo Visual. Proyecto NET básico bajo la plantilla de aplicación de Windows Luego puede probar el nuevo control en el formulario en blanco generado automáticamente por el IDE. Cree una nueva clase NumericTextBox en el proyecto. Reemplace NumericTextBox con el siguiente código. Compile el contenido del archivo de clase. seleccione Herramientas gt en el menú en la caja de herramientas personalizada, seleccione el archivo exe obtenido al compilar el proyecto previamente para agregar nuevos controles a la caja de herramientas Clase pública NumericTextBox hereda el sistema Windows Forms TextBox Protected Overrides Sub OnKeyPress (ByVal e As _ System Windows).

Forms KeyPressEventArgs) If Not Char IsDigit(e KeyChar) Then e Handled = True Else e Handled = False End If End Sub End Class Para este ejemplo, el código anterior es suficiente. Si aún cree que no es lo suficientemente perfecto, utilícelo. En su lugar, utilice el siguiente código con una maravillosa lógica booleana para reducir el número de líneas de código. Clase pública NumericTextBox hereda el sistema Windows Forms TextBox Protected Overrides Sub OnKeyPress(ByVal e As _ System Windows Forms KeyPressEventArgs) e Handled = Not Char IsDigit(e KeyChar) End Sub End Class Ahora el nuevo control se ha mostrado correctamente en el formulario. Maneja eventos como TextBox y tiene los mismos métodos y propiedades que TextBox. Ni siquiera necesita más codificación para implementar el enlace de datos al nuevo control. También es el control de clase base TextBox. Una de las funciones de este control es tener en cuenta que este control tiene requisitos muy estrictos para la entrada del usuario. Solo permite la entrada de números hasta. El ejemplo tiene la misma longitud, pero el código utilizado para manejar. El evento de cambio de tamaño del control y la implementación de las propiedades del componente TextBox también serán tan largos. Se puede ver que la herencia proporcionada por NET puede simplificar enormemente el código fuente. Esto por sí solo ya es impresionante, sin mencionarlo. muchas otras ventajas. Lo más maravilloso es que siempre que se requiera un determinado control, se puede usar un nuevo control heredado del control. Por ejemplo, dondequiera que se requiera un TextBox en cualquier rutina, se puede usar su control NumericTextBox. , se puede usar a partir de ahora. Un nuevo control que tiene un control en lugar de heredar de la clase UserControl no solo tiene toda la funcionalidad del control de la clase base, sino que también puede usar las propiedades, métodos y eventos heredados como la clase base. control Por lo tanto, cualquier programador que haya aprendido el control TextBox estándar sabrá cómo utilizar el control NumericTextBox. Permitir la herencia de clases/controles existentes es un salto importante de Visual Basic a NET, ¡pero las ventajas de NET no terminan ahí! En el entorno NET, los controles de Windows Forms no solo tienen muchas funciones poderosas, sino que su creación es mucho más fácil que en la versión anterior de Visual Basic

lishixinzhi/Article/program/net/201311/14940

p>