/// <summary> 
 /// Abre un Formulario y lo coloca en una TabPage dentro del TabControl indicado. 
 /// </summary> 
 /// <param name="frm">Instancia del formulario que se desea abrir.</param> 
 /// <param name="tab">TabControl donde se desea alojar el formulario.</param> 
 /// <param name="TituloTab">Name del archivo de recursos que indica el titulo de la TabPage.</param> 
 /// <param name="pDock">Estilo de Llenado.</param> 
 /// <remarks></remarks> 
 public static void AbrirFormulario(frmBase frm, TabControl tab, string TituloTab, DockStyle pDock)
 {
     AbrirFormulario(frm, tab, TituloTab, pDock, false, false);
     //frm.FormBorderStyle = Windows.Forms.FormBorderStyle.None
     //frm.TopLevel = False
     //frm.Dock = pDock
     //frm.Principal = tab.Parent.Parent.Parent
     //Dim p As New TabPage
     //p.Controls.Add(frm)
     //Dim idioma As New ManejadorIdioma("Prominente.DocumentExplorer.FrontEnd", "rsfIdioma")
     //p.Text = idioma.GetResource(TituloTab, True)
     //tab.Controls.Add(p)
     //tab.SelectedTab = p
     //frm.Show()
 }
 /// <summary> 
 /// Indica si la pagina que contiene el formulario solicitado esta activa. 
 /// </summary> 
 /// <param name="frm">Instancia del formulario que se desea abrir.</param> 
 /// <param name="tab">TabControl donde se desea alojar el formulario.</param> 
 public static Boolean ValidarActivacionFRM(frmBase frm, TabControl tab)
 {
     try
     {
         int i;
         Boolean Existe;
         Existe = false;
         for (i = 0; i <= tab.SelectedTab.Controls.Count - 1; i++)
         {
             if (tab.SelectedTab.Controls[i].Name == frm.Name)
             {
                 Existe = true;
                 break; // TODO: might not be correct. Was : Exit For
             }
         }
         return Existe;
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 /// <summary> 
 /// Abre un Formulario y lo coloca en una TabPage dentro del TabControl indicado. 
 /// </summary> 
 /// <param name="frm">Instancia del formulario que se desea abrir.</param> 
 /// <param name="tab">TabControl donde se desea alojar el formulario.</param> 
 /// <param name="TituloTab">Name del archivo de recursos que indica el titulo de la TabPage.</param> 
 /// <remarks></remarks> 
 public static void AbrirFormulario(frmBase frm, TabControl tab, string TituloTab)
 {
     AbrirFormulario(frm, tab, TituloTab, DockStyle.Fill, false, false);
 }
        /// <summary> 
        /// Abre un Formulario y lo coloca en una TabPage dentro del TabControl indicado. 
        /// </summary> 
        /// <param name="frm">Instancia del formulario que se desea abrir.</param> 
        /// <param name="tab">TabControl donde se desea alojar el formulario.</param> 
        /// <param name="TituloTab">Name del archivo de recursos que indica el titulo de la TabPage.</param> 
        /// <param name="pDock">Estilo de Llenado.</param> 
        /// <param name="NuevoTab">Indica si se agrega un nuevo tab para el formulario.</param> 
        /// <param name="RefrescarExistente">Indica se refresca el formulario en el tab.</param> 
        public static void AbrirFormulario(frmBase frm, TabControl tab, string TituloTab, DockStyle pDock, bool NuevoTab, bool RefrescarExistente)
        {
            frm.FormBorderStyle = FormBorderStyle.None;
            frm.TopLevel = false;
            frm.Dock = pDock;
            frm.Principal = (Form)tab.Parent.Parent.Parent;
            ////////////////////////////////////////////////////////////////////////////
            //AGREGAR EL CONTROL DE ACCESO A USUARIOS
            //Niega el acceso a ciertas ventanas dependiendo de los Perfiles del Usuario
            //If frm.Name <> "frmPantallaBienvenida" Then 'Todos deben tener acceso a la Pantalla de Bienvenida
            // If Not CType(frm.Principal, frmPrincipal).UsuarioLogueado.ValidarPermiso(frm.Name) Then
            // MessageBox.Show("No tiene acceso a esta Funcionalidad", "Acceso Denegado", MessageBoxButtons.OK)
            // Exit Sub
            // End If
            //End If
            ////////////////////////////////////////////////////////////////////////////

            //Para agregar un menu contextual a cada tab
            ///////////////////////////////////////////////////////
            ContextMenuStrip cb = new ContextMenuStrip();
            cb.Items.Add("Cerrar");
            cb.Items.Add("Cerrar las otras pestañas");
            cb.Items.Add("Cerrar todas las pestañas");

            ((ToolStripItem)cb.Items[0]).Click += CloseOnly_Click;
            ((ToolStripItem)cb.Items[1]).Click += CloseOthers_Click;
            ((ToolStripItem)cb.Items[2]).Click += CloseAll_Click;

            TabPage p = new TabPage();
            p.ContextMenuStrip = cb;
            p.Controls.Add(frm);
            ///////////////////////////////////////////////////////

            ////////////////////////////////////////////////////////////////////////////////////////////////////
            //AGREGAR EL MANEJADOR DE IDIOMA
            //Dim idioma As New ManejadorIdioma("Prominente.DocumentExplorer.ManejadorDeIdioma", "rsfIdioma")
            //p.Text = idioma.GetResource(TituloTab, True)
            ////////////////////////////////////////////////////////////////////////////////////////////////////
            p.Text = TituloTab;
            int i;
            bool Existe;
            Existe = false;
            for (i = 0; i <= tab.Controls.Count - 1; i++)
            {
                if (tab.Controls[i].Text == p.Text)
                {
                    Existe = true;
                    break; // TODO: might not be correct. Was : Exit For
                }
            }

            if (NuevoTab)
            {
                tab.Controls.Add(p);
                tab.SelectedTab = p;
                frm.Show();
            }
            else
            {
                if (Existe)
                {
                    if (RefrescarExistente)
                    {
                        tab.Controls[i].Controls.Remove(tab.Controls[i].Controls[0]);
                        tab.Controls[i].Controls.Add(frm);
                        tab.SelectedTab = (TabPage)tab.Controls[i];
                        frm.Show();
                    }
                    else
                    {
                        tab.SelectedTab = (TabPage)tab.Controls[i];
                    }
                }
                else
                {
                    tab.Controls.Add(p);
                    tab.SelectedTab = p;
                    frm.Show();
                }
            }
        }