using Exferia_Aplicacion.General;
using Exferia_Controles;
using Exferia_Formularios;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static Exferia_Aplicacion.General.Enumerados;

namespace Exferia_Aplicacion.Visualizacion
{
    public class Repintar
    {
        public static void Empezar(Control _obj_ACambiar)
        {
            Empezar(_obj_ACambiar,null);
        }
        public static void Empezar(Control _obj_ACambiar,bool? _bol_Obligatorio)
        {
            //P_Listados
            if (_obj_ACambiar.GetType() == typeof(P_Listados))
            {
                //Colores de la pantalla
                ((P_Listados)_obj_ACambiar).P_Base_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE_MENSAJES;
                ((P_Listados)_obj_ACambiar).P_Listados_ColorFiltros = Colores.G_COLOR_LISTADO_FILTROS;
            }
            // PE_Listados_SoloSeleccion
            else if (_obj_ACambiar.GetType() == typeof(PE_Listados_SoloSeleccion))
            {
                //Colores de la pantalla
                ((PE_Listados_SoloSeleccion)_obj_ACambiar).P_Base_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE_MENSAJES;
                ((PE_Listados_SoloSeleccion)_obj_ACambiar).PE_Listados_SoloSeleccion_ColorFiltros = Colores.G_COLOR_LISTADO_FILTROS;
            }
            // PE_Listados_SoloSeleccion_Multiple
            else if (_obj_ACambiar.GetType() == typeof(PE_Listados_SoloSeleccion_Multiple))
            {
                //Colores de la pantalla
                ((PE_Listados_SoloSeleccion_Multiple)_obj_ACambiar).P_Base_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE_MENSAJES;
                ((PE_Listados_SoloSeleccion_Multiple)_obj_ACambiar).PE_Listados_SoloSeleccion_Multiple_ColorFiltros = Colores.G_COLOR_LISTADO_FILTROS;
            }
            // PE_Mensajes
            else if (_obj_ACambiar.GetType() == typeof(PE_Mensajes))
            {
                //Colores de la pantalla
                ((PE_Mensajes)_obj_ACambiar).PE_Mensajes_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE_MENSAJES;
            }
            // PE_Password
            else if (_obj_ACambiar.GetType() == typeof(PE_Password))
            {
                //Colores de la pantalla
                ((PE_Password)_obj_ACambiar).PE_Password_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE_MENSAJES;
            }
            // PE_Mensajes_3Respuestas
            else if (_obj_ACambiar.GetType() == typeof(PE_Mensajes_3Respuestas))
            {
                //Colores de la pantalla
                ((PE_Mensajes_3Respuestas)_obj_ACambiar).PE_Mensajes_3Respuestas_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE_MENSAJES;
            }
            // PE_Mensajes_Rutas
            else if(_obj_ACambiar.GetType() == typeof(PE_Mensajes_Rutas))
            {
                //Colores de la pantalla
                ((PE_Mensajes_Rutas)_obj_ACambiar).PE_Mensajes_Rutas_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE_MENSAJES;
            }
            //PE_ValidacionUsuario
            else if(_obj_ACambiar.GetType() == typeof(PE_ValidacionUsuario))
            {
                //Colores de la pantalla
                ((PE_ValidacionUsuario)_obj_ACambiar).PE_ValidacionUsuario_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE;
            }
            //PE_ValidacionLicencia
            else if(_obj_ACambiar.GetType() == typeof(PE_ValidacionLicencia))
            {
                //Colores de la pantalla
                ((PE_ValidacionLicencia)_obj_ACambiar).PE_ValidacionLicencia_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE;
            }
            //PE_Esperando
            else if (_obj_ACambiar.GetType() == typeof(PE_Esperando))
            {
                //Colores de la pantalla
                ((PE_Esperando)_obj_ACambiar).PE_Esperando_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE_MENSAJES;
            }
            //PE_Esperando_BarraProgreso
            else if (_obj_ACambiar.GetType() == typeof(PE_Esperando_BarraProgreso))
            {
                //Colores de la pantalla
                ((PE_Esperando_BarraProgreso)_obj_ACambiar).PE_Esperando_BarraProgreso_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE_MENSAJES;
            }
            //General
            else if (_obj_ACambiar.GetType().BaseType == typeof(P_Base) ||
                _obj_ACambiar.GetType().BaseType == typeof(P_Base_Mantenimientos))
            {
                //Colores de la pantalla
                ((P_Base)_obj_ACambiar).P_Base_ColorTituloyBordes = Colores.G_COLOR_PRINCIPAL_BASE;
            }
            //Exferia_Button_MenuSuperior
            else if (_obj_ACambiar.GetType() == typeof(Exferia_Button_MenuSuperior))
            {
                ((Exferia_Button_MenuSuperior)_obj_ACambiar).Cambiar_Fuente();

                //Asignar Imagen
                Imagenes.Asignar_Imagen(((Exferia_Button_MenuSuperior)_obj_ACambiar).Exferia_Button_Cerrar);
                return;
            }

            foreach (Control obj in _obj_ACambiar.Controls)
            {
                //MonthCalendar
                if (obj.GetType() == typeof(CustomControls.MonthCalendar))
                {
                    ((CustomControls.MonthCalendar)obj).ColorTable.HeaderGradientBegin=Colores.G_COLOR_PRINCIPAL_BASE;
                    ((CustomControls.MonthCalendar)obj).ColorTable.HeaderGradientEnd = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((CustomControls.MonthCalendar)obj).ColorTable.HeaderActiveGradientBegin = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((CustomControls.MonthCalendar)obj).ColorTable.HeaderActiveGradientEnd = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((CustomControls.MonthCalendar)obj).ColorTable.Border = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((CustomControls.MonthCalendar)obj).ColorTable.MonthSeparator = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((CustomControls.MonthCalendar)obj).ColorTable.WeekHeaderGradientBegin = Colores.G_COLOR_FONDO_BASE;
                    ((CustomControls.MonthCalendar)obj).ColorTable.WeekHeaderGradientEnd = Colores.G_COLOR_FONDO_BASE;
                    ((CustomControls.MonthCalendar)obj).ColorTable.WeekHeaderText = Colores.G_COLOR_FONDO_BASE;

                }
                //Exferia_BarraProgreso
                else if (obj.GetType() == typeof(Exferia_BarraProgreso))
                {
                    ((Exferia_BarraProgreso)obj).Cambiar_Fuente();
                    ((Exferia_BarraProgreso)obj).Cambiar_Colores();
                }
                //Exferia_Button
                else if (obj.GetType() == typeof(Exferia_Button))
                {
                    ((Exferia_Button)obj).BackColor = Colores.G_COLOR_FONDO_BOTON;
                   
                    ((Exferia_Button)obj).FlatAppearance.MouseDownBackColor = Colores.G_COLOR_PRINCIPAL_CLARO;
                    ((Exferia_Button)obj).FlatAppearance.MouseOverBackColor = Colores.G_COLOR_PRINCIPAL_TRASLUCIDO;

                    if (((Exferia_Button)obj).Exferia_Button_Permitir_CambioFuenteAutomatico)
                    {
                        ((Exferia_Button)obj).ForeColor = Colores.G_COLOR_PRINCIPAL_OSCURO;
                        ((Exferia_Button)obj).Font = Fuentes.G_FONT_ETIQUETAS;
                    }

                    //Asignar Imagen
                    Imagenes.Asignar_Imagen(obj); 
                }
                //Exferia_Button_ConBorde
                else if (obj.GetType() == typeof(Exferia_Button_ConBorde))
                {
                    ((Exferia_Button_ConBorde)obj).BackColor = Colores.G_COLOR_FONDO_BOTON;

                    ((Exferia_Button_ConBorde)obj).FlatAppearance.MouseDownBackColor = Colores.G_COLOR_PRINCIPAL_CLARO;
                    ((Exferia_Button_ConBorde)obj).FlatAppearance.MouseOverBackColor = Colores.G_COLOR_PRINCIPAL_TRASLUCIDO;

                    if (((Exferia_Button_ConBorde)obj).Exferia_Button_Permitir_CambioFuenteAutomatico)
                    {
                        ((Exferia_Button_ConBorde)obj).ForeColor = Colores.G_COLOR_PRINCIPAL_OSCURO;
                        ((Exferia_Button_ConBorde)obj).Font = Fuentes.G_FONT_ETIQUETAS;

                        ((Exferia_Button_ConBorde)obj).FlatAppearance.BorderColor = Colores.G_COLOR_PRINCIPAL_OSCURO;
                    }

                    //Asignar Imagen
                    Imagenes.Asignar_Imagen(obj);
                }
                //Exferia_Button_Situacion
                else if (obj.GetType() == typeof(Exferia_Button_Situacion))
                {

                    if (((Exferia_Button_Situacion)obj).Exferia_Button_Situacion_Seleccionado)
                    {
                        ((Exferia_Button_Situacion)obj).BackColor = Colores.G_COLOR_FONDO_BOTON_SITUACION_SELECCIONADO;
                    }
                    else
                    {
                        if (!((Exferia_Button_Situacion)obj).Enabled)
                        {
                            ((Exferia_Button_Situacion)obj).BackColor = Colores.G_COLOR_FONDO_BOTON_SITUACION_BLOQUEADO;
                        }
                        else
                        {
                            ((Exferia_Button_Situacion)obj).BackColor = Colores.G_COLOR_FONDO_BOTON_SITUACION;
                        }
                    }

                    ((Exferia_Button_Situacion)obj).FlatAppearance.MouseDownBackColor = Colores.G_COLOR_PRINCIPAL_CLARO;
                    ((Exferia_Button_Situacion)obj).FlatAppearance.MouseOverBackColor = Colores.G_COLOR_PRINCIPAL_TRASLUCIDO;
                    ((Exferia_Button_Situacion)obj).FlatAppearance.BorderColor = Colores.G_COLOR_BORDE_BOTON_SITUACION;

                    ((Exferia_Button_Situacion)obj).ForeColor = Colores.G_COLOR_LETRA_BOTON_SITUACION;
                    ((Exferia_Button_Situacion)obj).Font = Fuentes.G_FONT_TEXTOS_BOTONSITUACION;
                    
                }
                //Exferia_Button_Vertical
                else if (obj.GetType() == typeof(Exferia_Button_Vertical))
                {
                    ((Exferia_Button_Vertical)obj).BackColor = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((Exferia_Button_Vertical)obj).ForeColor = Colores.G_COLOR_LETRA_BOTONVERTICAL;
                    ((Exferia_Button_Vertical)obj).FlatAppearance.MouseDownBackColor = Colores.G_COLOR_PRINCIPAL_CLARO;
                    ((Exferia_Button_Vertical)obj).FlatAppearance.MouseOverBackColor = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((Exferia_Button_Vertical)obj).Font = Fuentes.G_FONT_ETIQUETAS;

                    //Asignar Imagen
                    Imagenes.Asignar_Imagen(obj);
                }
                //Exferia_CheckBox
                else if (obj.GetType() == typeof(Exferia_CheckBox))
                {
                    //Comprobar si es obligatorio ..............................................
                    bool bol_Obligatorio = ((Exferia_CheckBox)obj).Exferia_CheckBox_Obligatorio;
                    if (_bol_Obligatorio != null)
                    {
                        bol_Obligatorio = _bol_Obligatorio.Value;
                    }
                    if (bol_Obligatorio)
                    {
                        ((Exferia_CheckBox)obj).BackColor = Colores.G_COLOR_FONDO_OBLIGATORIO;
                    }
                    else
                    {
                        ((Exferia_CheckBox)obj).BackColor = Colores.G_COLOR_FONDO_ETIQUETAS;
                    }
                    //............................................................................

                    ((Exferia_CheckBox)obj).ForeColor = Colores.G_COLOR_PRINCIPAL_OSCURO;
                    ((Exferia_CheckBox)obj).FlatAppearance.MouseDownBackColor = Colores.G_COLOR_PRINCIPAL_CLARO;
                    ((Exferia_CheckBox)obj).FlatAppearance.MouseOverBackColor = Colores.G_COLOR_PRINCIPAL_TRASLUCIDO;


                    ((Exferia_CheckBox)obj).Font = Fuentes.G_FONT_ETIQUETAS;

                }
                //Exferia_CheckListBox
                else if (obj.GetType() == typeof(Exferia_CheckListBox))
                {
                    ((Exferia_CheckListBox)obj).BackColor = Colores.G_COLOR_FONDO_BASE;
                    ((Exferia_CheckListBox)obj).ForeColor = Colores.G_COLOR_PRINCIPAL_OSCURO;
                    ((Exferia_CheckListBox)obj).Font = Fuentes.G_FONT_ETIQUETAS;
                }
                //Exferia_ComboBox
                else if (obj.GetType() == typeof(Exferia_ComboBox))
                {
                    //Comprobar si es obligatorio ..............................................
                    bool bol_Obligatorio = ((Exferia_ComboBox)obj).Exferia_ComboBox_Obligatorio;
                    if (_bol_Obligatorio != null)
                    {
                        bol_Obligatorio = _bol_Obligatorio.Value;
                    }
                    if (bol_Obligatorio)
                    {
                        ((Exferia_ComboBox)obj).BackColor = Colores.G_COLOR_FONDO_OBLIGATORIO;
                    }
                    else
                    {
                        ((Exferia_ComboBox)obj).BackColor = Colores.G_COLOR_FONDO_BASE;
                    }
                    //............................................................................

                    ((Exferia_ComboBox)obj).ForeColor =Colores.G_COLOR_PRINCIPAL_OSCURO;
                    ((Exferia_ComboBox)obj).Exferia_ComboBox_BorderColor = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((Exferia_ComboBox)obj).Font = Fuentes.G_FONT_TEXTOS_NEGRITA;
                }
                //Exferia_Cuentas
                else if (obj.GetType() == typeof(Exferia_Cuentas))
                {
                    Empezar(obj, ((Exferia_Cuentas)obj).Exferia_Cuentas_Obligatorio);
                }
                //Exferia_DataGridView
                else if (obj.GetType() == typeof(Exferia_DataGridView))
                {
                    ((Exferia_DataGridView)obj).BackgroundColor = Colores.G_COLOR_FONDO_BASE;
                    ((Exferia_DataGridView)obj).ForeColor = Colores.G_COLOR_LISTADO_CABECERA_LETRA;
                    ((Exferia_DataGridView)obj).GridColor = Color.White;

                    ((Exferia_DataGridView)obj).DefaultCellStyle.BackColor = Colores.G_COLOR_LISTADO_FILANORMAL_FONDO;
                    ((Exferia_DataGridView)obj).DefaultCellStyle.ForeColor = Colores.G_COLOR_LISTADO_FILANORMAL_LETRA;
                    ((Exferia_DataGridView)obj).AlternatingRowsDefaultCellStyle.BackColor = Colores.G_COLOR_LISTADO_FILAALTERNATIVA_FONDO;
                    ((Exferia_DataGridView)obj).AlternatingRowsDefaultCellStyle.ForeColor = Colores.G_COLOR_LISTADO_FILAALTERNATIVA_LETRA;

                    ((Exferia_DataGridView)obj).ColumnHeadersDefaultCellStyle.BackColor = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((Exferia_DataGridView)obj).ColumnHeadersDefaultCellStyle.ForeColor = Colores.G_COLOR_LISTADO_CABECERA_LETRA;
                    

                    ((Exferia_DataGridView)obj).EnableHeadersVisualStyles = false;

                    ((Exferia_DataGridView)obj).RowsDefaultCellStyle.SelectionBackColor = Colores.G_COLOR_FONDO_SELECCION;
                    ((Exferia_DataGridView)obj).RowsDefaultCellStyle.SelectionForeColor = Colores.G_COLOR_LETRA_SELECCION;

                    ((Exferia_DataGridView)obj).ColumnHeadersDefaultCellStyle.Font = Fuentes.G_FONT_TEXTOS;
                    //...........................................................
                }
                //Exferia_DateTimePicker
                else if (obj.GetType() == typeof(Exferia_DateTimePicker))
                {
                    //Comprobar si es obligatorio ..............................................
                    bool bol_Obligatorio = ((Exferia_DateTimePicker)obj).Exferia_DateTimePicker_Obligatorio;
                    if (_bol_Obligatorio != null)
                    {
                        bol_Obligatorio = _bol_Obligatorio.Value;
                    }
                    if (bol_Obligatorio)
                    {
                        ((Exferia_DateTimePicker)obj).Exferia_DateTimePicker_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                    }
                    else
                    {
                        ((Exferia_DateTimePicker)obj).Exferia_DateTimePicker_Fondo = Colores.G_COLOR_FONDO_BASE;
                    }
                    //............................................................................


                    ((Exferia_DateTimePicker)obj).Exferia_DateTimePicker_ColorTexto(Colores.G_COLOR_TEXTO_ESCRITO);
                    ((Exferia_DateTimePicker)obj).Exferia_DatetimePicker_BordeColor_Foco = Colores.G_COLOR_ATENCION;
                    ((Exferia_DateTimePicker)obj).Exferia_DateTimePicker_BordeColor = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((Exferia_DateTimePicker)obj).Exferia_DateTimePicker_FuenteTexto(Fuentes.G_FONT_TEXTOS);
                }
                //Exferia_FechaSeleccion
                else if (obj.GetType() == typeof(Exferia_FechaSeleccion))
                {
                    Empezar(obj, ((Exferia_FechaSeleccion)obj).Exferia_FechaSeleccion_Obligatorio);
                }
                //Exferia_FicheroSeleccion
                else if (obj.GetType() == typeof(Exferia_FicheroSeleccion))
                {
                    Empezar(obj, ((Exferia_FicheroSeleccion)obj).Exferia_FicheroSeleccion_Obligatorio);
                }
                //Exferia_FicheroSeleccion_RutaCompleta
                else if (obj.GetType() == typeof(Exferia_FicheroSeleccion_RutaCompleta))
                {
                    Empezar(obj, ((Exferia_FicheroSeleccion_RutaCompleta)obj).Exferia_FicheroSeleccion_RutaCompleta_Obligatorio);
                }
                //Exferia_F3
                else if (obj.GetType() == typeof(Exferia_F3))
                {
                    Empezar(obj, ((Exferia_F3)obj).Exferia_F3_PRINCIPAL_Obligatorio);
                }
                //Exferia_F3_Auxiliar
                else if (obj.GetType() == typeof(Exferia_F3_Auxiliar))
                {
                    Empezar(obj, ((Exferia_F3_Auxiliar)obj).Exferia_F3_Auxiliar_PRINCIPAL_Obligatorio);
                }
                //Exferia_F3_SoloSeleccion
                else if (obj.GetType() == typeof(Exferia_F3_SoloSeleccion))
                {
                    Empezar(obj, ((Exferia_F3_SoloSeleccion)obj).Exferia_F3_SoloSeleccion_PRINCIPAL_Obligatorio);
                }
                //Exferia_F3_SoloSeleccion_Simple
                else if (obj.GetType() == typeof(Exferia_F3_SoloSeleccion_Simple))
                {
                    Empezar(obj, ((Exferia_F3_SoloSeleccion_Simple)obj).Exferia_F3_SoloSeleccion_Simple_PRINCIPAL_Obligatorio);
                }
                //Exferia_GroupBox
                else if (obj.GetType() == typeof(Exferia_GroupBox))
                {
                    ((Exferia_GroupBox)obj).BackColor = Colores.G_COLOR_FONDO_BASE;
                    ((Exferia_GroupBox)obj).ForeColor = Colores.G_COLOR_PRINCIPAL_OSCURO;
                    ((Exferia_GroupBox)obj).Font = Fuentes.G_FONT_ETIQUETAS_GRANDE;
                }
                //Exferia_MenuSuperior
                else if (obj.GetType() == typeof(Exferia_MenuSuperior))
                {
                    ((Exferia_MenuSuperior)obj).Cambiar_Colores();
                }
                //Exferia_Label
                else if (obj.GetType() == typeof(Exferia_Label))
                {
                    ((Exferia_Label)obj).BackColor = Colores.G_COLOR_FONDO_ETIQUETAS;
                    ((Exferia_Label)obj).ForeColor = Colores.G_COLOR_PRINCIPAL_OSCURO;
                    ((Exferia_Label)obj).Font = Fuentes.G_FONT_ETIQUETAS;
                }
                //Exferia_Label_Error
                else if (obj.GetType() == typeof(Exferia_Label_Error))
                {
                    ((Exferia_Label_Error)obj).BackColor = Colores.G_COLOR_FONDO_ETIQUETAS;
                    ((Exferia_Label_Error)obj).ForeColor = Colores.G_COLOR_ATENCION;
                    ((Exferia_Label_Error)obj).Font = Fuentes.G_FONT_ETIQUETAS;
                }
                //Exferia_Label_Total
                else if (obj.GetType() == typeof(Exferia_Label_Total))
                {
                    ((Exferia_Label_Total)obj).BackColor = Colores.G_COLOR_LISTADO_TOTALES_FONDO;
                    ((Exferia_Label_Total)obj).ForeColor = Colores.G_COLOR_LISTADO_TOTALES_LETRA;
                    ((Exferia_Label_Total)obj).Font = Fuentes.G_FONT_TEXTOS;
                    ((Exferia_Label_Total)obj).TextAlign = ContentAlignment.MiddleRight;
                }
                //Exferia_Label_InformacionEmpresa
                else if (obj.GetType() == typeof(Exferia_Label_InformacionEmpresa))
                {
                    ((Exferia_Label_InformacionEmpresa)obj).BackColor = Colores.G_COLOR_FONDO_ETIQUETAS;
                    ((Exferia_Label_InformacionEmpresa)obj).ForeColor = Colores.G_COLOR_PRINCIPAL_OSCURO;
                    ((Exferia_Label_InformacionEmpresa)obj).Font = Fuentes.G_FONT_TEXTOS_GRANDE;
                }
                //Exferia_Label_Vertical
                else if (obj.GetType() == typeof(Exferia_Label_Vertical))
                { }
                //Exferia_NumericUpDown
                else if (obj.GetType() == typeof(Exferia_NumericUpDown))
                {
                    //Comprobar si es obligatorio ..............................................
                    bool bol_Obligatorio = ((Exferia_NumericUpDown)obj).Exferia_NumericUpDown_Obligatorio;
                    if (_bol_Obligatorio != null)
                    {
                        bol_Obligatorio = _bol_Obligatorio.Value;
                    }
                    if (bol_Obligatorio)
                    {
                        ((Exferia_NumericUpDown)obj).Exferia_NumericUpDown_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                    }
                    else
                    {
                        ((Exferia_NumericUpDown)obj).Exferia_NumericUpDown_Fondo = Colores.G_COLOR_FONDO_BASE;
                    }
                    //............................................................................


                    ((Exferia_NumericUpDown)obj).Exferia_NumericUpDown_ColorTexto(Colores.G_COLOR_TEXTO_ESCRITO);
                    ((Exferia_NumericUpDown)obj).Exferia_NumericUpDown_BordeColor_Foco = Colores.G_COLOR_ATENCION;
                    ((Exferia_NumericUpDown)obj).Exferia_NumericUpDown_BordeColor_Normal = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((Exferia_NumericUpDown)obj).EXferia_NumericUpDown_FuenteTexto(Fuentes.G_FONT_TEXTOS);
                }
                //Exferia_Panel_Degradado
                else if (obj.GetType() == typeof(Exferia_Panel_Degradado))
                {
                    Empezar(obj);
                }
                //Exferia_Panel_Degradado_CambioColor
                else if (obj.GetType() == typeof(Exferia_Panel_Degradado_CambioColor))
                {
                    ((Exferia_Panel_Degradado_CambioColor)obj).Exferia_Panel_Degradado_CambioColor_Color_Desde = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((Exferia_Panel_Degradado_CambioColor)obj).Exferia_Panel_Degradado_CambioColor_Color_Hasta = Colores.G_COLOR_FONDO_BASE;
                    ((Exferia_Panel_Degradado_CambioColor)obj).Exferia_Panel_Degradado_CambioColor_TipoDegradado = LinearGradientMode.Vertical;

                    Empezar(obj);
                }
                //Exferia_Paginador
                else if (obj.GetType() == typeof(Exferia_Paginador))
                {
                    ((Exferia_Paginador)obj).Cambiar_Colores();
                }
                //Exferia_RadioButton
                else if (obj.GetType() == typeof(Exferia_RadioButton))
                {
                    //Comprobar si es obligatorio ..............................................
                    bool bol_Obligatorio = ((Exferia_RadioButton)obj).Exferia_RadioButton_Obligatorio;
                    if (_bol_Obligatorio != null)
                    {
                        bol_Obligatorio = _bol_Obligatorio.Value;
                    }
                    if (bol_Obligatorio)
                    {
                        ((Exferia_RadioButton)obj).BackColor = Colores.G_COLOR_FONDO_OBLIGATORIO;
                    }
                    else
                    {
                        if (((Exferia_RadioButton)obj).Exferia_RadioButton_Repintar_ColorFondoLetra)
                        {
                            ((Exferia_RadioButton)obj).BackColor = Colores.G_COLOR_FONDO_RADIOBUTTON;
                        }
                    }
                    //............................................................................

                    if (((Exferia_RadioButton)obj).Exferia_RadioButton_Repintar_ColorFondoLetra)
                    {
                        ((Exferia_RadioButton)obj).ForeColor = Colores.G_COLOR_PRINCIPAL_OSCURO;
                    }

                    ((Exferia_RadioButton)obj).Font = Fuentes.G_FONT_TEXTOS;
                }
                //Exferia_TabControl
                else if (obj.GetType() == typeof(Exferia_TabControl))
                {
                    ((Exferia_TabControl)obj).Exferia_TabControl_Fondo_TabPage_Normal = Colores.G_COLOR_FONDO_TAB_NORMAL;
                    ((Exferia_TabControl)obj).Exferia_TabControl_Fondo_TabPage_Cambiado = Colores.G_COLOR_FONDO_TAB_CAMBIADO;
                    ((Exferia_TabControl)obj).Exferia_TabControl_Fondo_TabPage_Seleccionado = Colores.G_COLOR_FONDO_TAB_SELECCIONADO;

                    ((Exferia_TabControl)obj).Exferia_TabControl_Letra_TabPage_Normal = Colores.G_COLOR_LETRA_TAB_NORMAL;
                    ((Exferia_TabControl)obj).Exferia_TabControl_Letra_TabPage_Cambiado = Colores.G_COLOR_LETRA_TAB_CAMBIADO;
                    ((Exferia_TabControl)obj).Exferia_TabControl_Letra_TabPage_Seleccionado = Colores.G_COLOR_LETRA_TAB_SELECCIONADO;
                    Empezar(obj);
                }
                //Exferia_TextBox
                else if (obj.GetType() == typeof(Exferia_TextBox))
                {
                    //Comprobar si es obligatorio ..............................................
                    bool bol_Obligatorio = ((Exferia_TextBox)obj).Exferia_TextBox_Obligatorio;
                    if (_bol_Obligatorio != null)
                    {
                        bol_Obligatorio = _bol_Obligatorio.Value;
                    }
                    if (bol_Obligatorio)
                    {
                        ((Exferia_TextBox)obj).Exferia_TextBox_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                    }
                    else
                    {
                        ((Exferia_TextBox)obj).Exferia_TextBox_Fondo = Colores.G_COLOR_FONDO_BASE;
                    }
                    //............................................................................

                    ((Exferia_TextBox)obj).Exferia_TextBox_BordeColor_Foco = Colores.G_COLOR_ATENCION;
                    ((Exferia_TextBox)obj).Exferia_TextBox_BordeColor_Normal = Colores.G_COLOR_PRINCIPAL_BASE;

                    if (((Exferia_TextBox)obj).Exferia_TextBox_Permitir_CambioFuenteAutomatico)
                    {
                        ((Exferia_TextBox)obj).Exferia_TextBox_ColorTexto(Colores.G_COLOR_TEXTO_ESCRITO);
                        ((Exferia_TextBox)obj).Exferia_TextBox_FuenteTexto(Fuentes.G_FONT_TEXTOS);
                    }
                }
                //Exferia_TextBox_Busqueda
                else if (obj.GetType() == typeof(Exferia_TextBox_Busqueda))
                {
                    Empezar(obj, ((Exferia_TextBox_Busqueda)obj).Exferia_TextBox_Busqueda_PRINCIPAL_Obligatorio);
                }
                //Exferia_TextBox_ConMascara
                else if (obj.GetType() == typeof(Exferia_TextBox_ConMascara))
                {
                    //Comprobar si es obligatorio ..............................................
                    bool bol_Obligatorio = ((Exferia_TextBox_ConMascara)obj).Exferia_TextBox_ConMascara_Obligatorio;
                    if (_bol_Obligatorio != null)
                    {
                        bol_Obligatorio = _bol_Obligatorio.Value;
                    }
                    if (bol_Obligatorio)
                    {
                        ((Exferia_TextBox_ConMascara)obj).Exferia_TextBox_ConMascara_Fondo = Colores.G_COLOR_FONDO_OBLIGATORIO;
                    }
                    else
                    {
                        ((Exferia_TextBox_ConMascara)obj).Exferia_TextBox_ConMascara_Fondo = Colores.G_COLOR_FONDO_BASE;
                    }
                    //............................................................................

                    ((Exferia_TextBox_ConMascara)obj).Exferia_TextBox_ConMascara_ColorTexto(Colores.G_COLOR_TEXTO_ESCRITO);
                    ((Exferia_TextBox_ConMascara)obj).Exferia_TextBox_ConMascara_BordeColor_Foco = Colores.G_COLOR_ATENCION;
                    ((Exferia_TextBox_ConMascara)obj).Exferia_TextBox_ConMascara_BordeColor_Normal = Colores.G_COLOR_PRINCIPAL_BASE;
                    ((Exferia_TextBox_ConMascara)obj).Exferia_TextBox_ConMascara_FuenteTexto(Fuentes.G_FONT_TEXTOS);
                }
                
                //Exferia_TextBox_CIFNIF
                else if (obj.GetType() == typeof(Exferia_TextBox_CIFNIF))
                {
                    Empezar(obj, ((Exferia_TextBox_CIFNIF)obj).Exferia_TextBox_CIFNIF_Obligatorio);
                }
                //Exferia_TextBox_Email
                else if (obj.GetType() == typeof(Exferia_TextBox_Email))
                {
                    Empezar(obj, ((Exferia_TextBox_Email)obj).Exferia_TextBox_Email_Obligatorio);
                }
                //Exferia_TextBox_IBAN
                else if (obj.GetType() == typeof(Exferia_TextBox_IBAN))
                {
                    Empezar(obj, ((Exferia_TextBox_IBAN)obj).Exferia_TextBox_IBAN_Obligatorio);
                }
                //Exferia_TextBox_URL
                else if (obj.GetType() == typeof(Exferia_TextBox_URL))
                {
                    Empezar(obj, ((Exferia_TextBox_URL)obj).Exferia_TextBox_URL_Obligatorio);
                }
                //Exferia_TreeView
                else if (obj.GetType() == typeof(Exferia_TreeView))
                {
                    ((Exferia_TreeView)obj).Font = Fuentes.G_FONT_TEXTOS;
                }
                //Panel
                else if (obj.GetType() == typeof(Panel))
                {
                    Empezar(obj);
                }
                //SplitContainer
                else if (obj.GetType() == typeof(SplitContainer))
                {
                    Empezar(obj);
                }
                //SplitterPanel
                else if (obj.GetType() == typeof(SplitterPanel))
                {
                    Empezar(obj);
                }
                //TabPage
                else if (obj.GetType() == typeof(TabPage))
                {
                    ((TabPage)obj).BackColor = Color.White;
                    Empezar(obj);
                }
                //UserControl
                else if (obj.GetType() == typeof(UserControl))
                {
                    Empezar(obj);
                }
            }
        }
    }
}

