none
Ayuda con menu Ribbon. RRS feed

  • Pregunta

  • Tengo un menu en ribbon y cada boston abre una pestaña (tab), pero cuando tengo varias pestañas abiertas y hago click en el boton de alguna pestaña que ya esta abierta, necesita que me lleve a esa pestaña o poner el foco en ella, este es el codigo:

     

     case "BtnTestFormularios":
    
    
                            objPeriodoContable = new frmPeriodoContable();// objFrmGuiaDespachoPendiente
                            objPeriodoContable.MdiParent = this;
                            if (mtdBoolFrameActivado(objPeriodoContable))
                            {
                                objPeriodoContable.WindowState = FormWindowState.Maximized;
                                objPeriodoContable.Show();
                            }
                            else
                                //objPeriodoContable.MdiParent = null ;
                            
                                if (objPeriodoContable != null)
                            {
                                    
                                objPeriodoContable.Visible = true;  //= TabControlAction.Selected();
                            }
                            break;
    


    Dentro del ultimo if es donde estoy tratando de poner el codigo que me ponga el foco en la pestaña que esta abierta pero no puedo, solo logro crear una nueva pestaña con el mismo boton, osea que si presiono el boton de un formulario que ya esta abierto, me abre otro fomrmulario identico.

    He probado con el focus() pero no pasa nada.

    viernes, 28 de octubre de 2011 14:55

Respuestas

  • hola

    pero cuales serian las solapas ? porque alli veo que abres un nuevo formulario

     

    porque podrias buscar si el form existe

    como plenteo aqui

    http://social.msdn.microsoft.com/Forums/es/vbes/thread/a739a1fb-90e9-40a1-be3e-0018888384b4

    veras que pr el nombre buscas en Application.OpenForms  y ver si ya esta alli

     

    public Form GetExistInstance(string formName)
    {
    
    	Form result = null;
    
    	foreach ( f in Application.OpenForms) {
    		if (f.Name == formName) {
    			result = f;
    			break;
    		}
    	}
    
    	return result;
    
    }
    
    
    private void NuevoToolStripMenuItem_Click(...)
    {
    	Form f = GetExistInstance(Form2.Name);
    
    	if (f == null) 
            {
    		f = new Form2();
    	}
    
    	formcata.Show();
    
    }
    

    como veras buscas en los forms abiertos y devuelves la instancia si existe

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Lord-Nicon viernes, 28 de octubre de 2011 16:32
    viernes, 28 de octubre de 2011 15:15

Todas las respuestas

  • hola

    pero cuales serian las solapas ? porque alli veo que abres un nuevo formulario

     

    porque podrias buscar si el form existe

    como plenteo aqui

    http://social.msdn.microsoft.com/Forums/es/vbes/thread/a739a1fb-90e9-40a1-be3e-0018888384b4

    veras que pr el nombre buscas en Application.OpenForms  y ver si ya esta alli

     

    public Form GetExistInstance(string formName)
    {
    
    	Form result = null;
    
    	foreach ( f in Application.OpenForms) {
    		if (f.Name == formName) {
    			result = f;
    			break;
    		}
    	}
    
    	return result;
    
    }
    
    
    private void NuevoToolStripMenuItem_Click(...)
    {
    	Form f = GetExistInstance(Form2.Name);
    
    	if (f == null) 
            {
    		f = new Form2();
    	}
    
    	formcata.Show();
    
    }
    

    como veras buscas en los forms abiertos y devuelves la instancia si existe

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Lord-Nicon viernes, 28 de octubre de 2011 16:32
    viernes, 28 de octubre de 2011 15:15
  • Muchas gracias, me sirvio de maravilla el codigo.
    viernes, 28 de octubre de 2011 16:33