Realización de actualización de datos en tiempo real del marco de desarrollo de Winform

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.

Código de copia
        ///  <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); 
            } 
        }
Código de copia

3) Cuando se guardan los datos, se activa un evento que desencadena la actualización inmediata de datos

Código de copia
        ///  <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; 
                } 
            }
        }
Código de copia

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í.

Código de copia
        ///  <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 (); 
        }
Código de copia

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.

28 artículos originales publicados · Me gusta 15 · Visitas 110,000+

Supongo que te gusta

Origin blog.csdn.net/z3h0a5n8g8x9i9a2o3/article/details/9014199
Recomendado
Clasificación