En el desarrollo de Winform, hay varios valores de transferencia entre páginas. A continuación se presenta la operación de actualización de página a través de eventos
1. La relación de herencia de la capa de interfaz del marco de desarrollo de Winform
Antes de abrir, introduciré primero la relación de herencia de la capa de interfaz en el marco de desarrollo de Winform. Primero, dividiré todos los formularios en tres categorías, uno es el formulario ordinario, el otro es el formulario de edición y el otro es la ventana de visualización de la lista Cuerpo. La integración de formularios puede encapsular y manejar muchas cosas. Una buena encapsulación y herencia puede mejorar nuestra eficiencia y reducir la duplicación de código. Su papel ya no se discute y enfatiza aquí.
Adopte la herencia de ventanas para unificar la interfaz en gran medida y proporcione una buena encapsulación para las operaciones comunes de la interfaz, como la edición básica de datos, la nueva encapsulación de acumulación de ventana de retorno de carro, teclas de flecha, actualización de datos y manejo de excepciones , Inspección de datos, almacenamiento de datos, actualización de datos y otras interfaces, lo que proporciona una gran comodidad para el procesamiento de datos del formulario.
El formulario de visualización de consulta de datos tiene en cuenta las necesidades de visualización de múltiples documentos, generalmente hereda la clase base apropiada, encapsula algunos diseños de interfaz comúnmente utilizados, para lograr el efecto de procesamiento de interfaz correspondiente.
Para los tres tipos de formularios descritos anteriormente, las clases base de interfaz heredadas son las siguientes. Los formularios ordinarios heredan de BaseForm , los formularios de edición heredan de BaseEditForm y los formularios de visualización de lista heredan de BaseDock . Es como sigue en el proyecto.
En el diagrama de diseño de UML, vemos que su relación es la siguiente, donde el borde verde es nuestra clase base anterior, y el borde rojo es nuestro objeto de forma real. Desde esta figura, podemos verlo claramente Relación
BaseEditForm es relativamente más complejo que las otras dos formas base. Además de proporcionar algunos botones para guardar datos, también se puede usar para ver datos antes y después. A continuación se muestra su interfaz de inicialización y la interfaz de ejemplo de aplicación.
2. Realización de actualización de datos en tiempo real en el marco de desarrollo de Winform
Después de introducir la relación de herencia anterior, echemos un vistazo a cómo implementar la actualización oportuna de los datos en función de este modo de herencia, es decir, el efecto de sincronizar los registros de datos en la lista después de guardar el formulario de datos.
1) Primero agregue el manejo de eventos en la interfaz de clase base BaseEditForm
clase parcial pública BaseEditForm: BaseForm { evento público EventHandler OnDataSaved; // disparador para guardar datos de subformulario
2) Luego agregue el manejo del evento como se muestra a continuación.
/// <summary> /// Activador de eventos después de procesar el guardado de datos /// </ summary> public virtual void ProcessDataSaved ( remitente de objeto , EventArgs e) { if (OnDataSaved! = null ) { OnDataSaved (remitente, e); } }
3) Cuando se guardan los datos, se activa un evento que desencadena la actualización inmediata de datos
/// <resumen> /// Guardar datos (guardar nuevo y editado) /// </ summary> public virtual bool SaveEntity () { bool result = false ; if (! string .IsNullOrEmpty (ID)) { / / Resultado de guardado editado = SaveUpdated (); } else { // Nuevo resultado de guardado = SaveAddNew (); } resultado de retorno ; } /// <summary> ///Actualice los datos existentes /// </ summary> /// <returns> </ return > public virtual bool SaveUpdated () { return true ; } /// <summary> /// Guarde los datos recién agregados /// </ summary> /// <returns> </ return > public virtual bool SaveAddNew () { return true ; } /// <summary> /// save /// </ summary> /// <param name = " cerrar ">Cerrar formulario </ param> private void SaveEntity ( bool close) { // Comprueba la validez de la entrada if ( this .CheckInput ()) { // Establece el estado ocupado del mouse this .Cursor = Cursors.WaitCursor; try { if ( this .SaveEntity ()) { ProcessDataSaved ( este .btnOK, nuevos EventArgs ()); MessageDxUtil.ShowTips ( " Save Successful " ); if (close) { this .DialogResult = DialogResult.OK; esto .Close (); } else { this .ClearScreen (); } } } catch (Exception ex) { this .ProcessException (ex); } finalmente { // 设置 鼠标 默认 状态 this .Cursor = Cursors.Default; } } }
Las operaciones de almacenamiento de datos anteriores pertenecen a la clase base, prestamos especial atención a este código
if ( this .SaveEntity ()) { ProcessDataSaved ( this .btnOK, new EventArgs ());
4) El funcionamiento de la interfaz de visualización de lista
Después de implementar las operaciones anteriores, estas no necesitan realizar ninguna operación en la subclase de BaseEditForm, solo necesitan implementar el siguiente código en la clase de interfaz de visualización de lista específica.
Sabemos que la interfaz de la lista generalmente tiene un paquete de función de actualización de datos específico (como la función BindData), luego, cuando creamos nuevos datos, el código de implementación es así.
/// <summary> /// 新增 数据 操作 /// </summary> private void btnAddNew_Click ( remitente de objeto , EventArgs e) { FrmEditLaw dlg = new FrmEditLaw (); dlg.OnDataSaved + = nuevo EventHandler (dlg_OnDataSaved); dlg.ShowDialog (); } void dlg_OnDataSaved ( remitente del objeto , EventArgs e) { BindData (); }
De esta manera, cuando mantenemos los datos en la nueva forma (adición de datos, edición de datos), una vez que se activa la operación de guardar, estos últimos registros de datos también se muestran en la lista.