none
mi control pierde el Focus RRS feed

  • Pregunta

  • Hola, tengo un problema con un control que hice, tengo un user control y dentro de el tengo un custom control, al momento de dar click al user control este se debe hacer focus, lo hago con this.focus(), pero inmediatamente pierde el focus, me di cuenta que si quito el custom control  que esta dentro o le pongo visible = false, no pierde el focus, quiero saber como hacerle para ke el user control no pierda el focus
    jueves, 5 de noviembre de 2009 21:07

Respuestas

Todas las respuestas

  • Hola Juanito.

    Puedes poner algo de codigo a ver como realizas eso, no deberia de perder el foco.
    Saludos
    David González
    viernes, 6 de noviembre de 2009 10:44
  • Hola Juanito.

    Puedes poner algo de codigo a ver como realizas eso, no deberia de perder el foco.
    Saludos
    David González
    Hola David.

    Es solo un User Control que tiene adentro un Custom Control, al momento de darle click al User Control debe ponersele el focus, pero por alguna razon lo pierde inmediatamente, me di cuenta que si al custom control, le pongo que herede de Label en vez de Control, y le doy click a mi User Control no lo pierde, pero, no necesito que herede de Label sino de Control porque Label no tiene el evento OnPaint, volvi a crear otro Custom control sin nada, una simple clase heredando de Control, lo arrastre hacia mi User Control, y pasa lo mismo, creo que por el hecho de ser un Control, se hace focus a este, y hace que mi User Control lo pierda, pero no estoy seguro

    Este es mi User Control

    public partial class ucNewsListItem : UserControl
        {
            public ucNewsListItem(News nwsParam)
            {
                InitializeComponent();
            }
    
            private void ucNewsListItem_Click(object sender, EventArgs e)
            {
                this.Focus();
            }
    
     private void ucNewsListItem_GotFocus(object sender, EventArgs e)
            {
                this.pnlNext.Width = 22;
            }
    
     private void ucNewsListItem_LostFocus(object sender, EventArgs e)
            {
                this.pnlNext.Width = 0;
            }
    
    y este es el nuevo Custom Control que hice, un simple Custom Control heredando de Control

    public partial class NewLabel : Control
        {
            public NewLabel()
            {
                InitializeComponent();
            }
    }
    Gracias por responder David, Saludos
    viernes, 6 de noviembre de 2009 17:07
  • Hola Juanito.

    He estado probando y tienes razon, aunque las propiedades GotFocus y LostFocus no salen en los eventos de tiempo de diseño y esto es por lo siguiente.

    cito textualmente lo que dice microsoft al respecto:

    Los eventos GotFocus y LostFocus son eventos de foco de bajo nivel asociados a los mensajes de Windows WM_KILLFOCUS y WM_SETFOCUS. Normalmente, los eventos GotFocus y LostFocus sólo se utilizan al actualizar UICues o al escribir controles personalizados. En su lugar, deben utilizarse los eventos Enter y Leave para todos los controles, excepto la clase Form , que utiliza los eventos Activated y Deactivate .

    Esto quiere decir que para este tipo de control en lugar de GotFocus y LostFocus, se debe hacer uso de los eventos Enter y Leave, estos ultimos si que salen en los eventos de tiempo de diseño en el UserControl.
    Como dice microsot GotFocus y LostFocus solo se suelen usar para actualizar UICues para especificar el estado de la interface de usuario.

    Asi pues probando con Enter y Leave me ha funcionado correctamente.

    Prueba con estos 2 ultimos a ver si te valen para tu proposito.
    Saludos
    David González
    sábado, 7 de noviembre de 2009 11:17
  • Hola Juanito.

    He estado probando y tienes razon, aunque las propiedades GotFocus y LostFocus no salen en los eventos de tiempo de diseño y esto es por lo siguiente.

    cito textualmente lo que dice microsoft al respecto:

    Los eventos GotFocus y LostFocus son eventos de foco de bajo nivel asociados a los mensajes de Windows WM_KILLFOCUS y WM_SETFOCUS. Normalmente, los eventos GotFocus y LostFocus sólo se utilizan al actualizar UICues o al escribir controles personalizados. En su lugar, deben utilizarse los eventos Enter y Leave para todos los controles, excepto la clase Form , que utiliza los eventos Activated y Deactivate .

    Esto quiere decir que para este tipo de control en lugar de GotFocus y LostFocus, se debe hacer uso de los eventos Enter y Leave, estos ultimos si que salen en los eventos de tiempo de diseño en el UserControl.
    Como dice microsot GotFocus y LostFocus solo se suelen usar para actualizar UICues para especificar el estado de la interface de usuario.

    Asi pues probando con Enter y Leave me ha funcionado correctamente.

    Prueba con estos 2 ultimos a ver si te valen para tu proposito.
    Saludos
    David González
    Disculpa David, gracias por la respuesta, pero olvide especificar que es una aplicacion mobil, y no hay Enter y Leave, de hecho creo que debi haberla hecho en Compact Framework
    lunes, 9 de noviembre de 2009 17:14
  • Uff, pues ahi me has pillado jejeje. No he tocado mucho el compact framework, solo c++ puro y duro.

    En cualquier caso si algun moderador puede que pase este hilo a compact framework, ya que puede ser que te puedan ayudar mejor.



    Saludos
    David González
    lunes, 9 de noviembre de 2009 18:53
  • Uff, pues ahi me has pillado jejeje. No he tocado mucho el compact framework, solo c++ puro y duro.

    En cualquier caso si algun moderador puede que pase este hilo a compact framework, ya que puede ser que te puedan ayudar mejor.



    Saludos
    David González
    Si, una disculpa, y gracias por responder
    lunes, 9 de noviembre de 2009 19:19
  • ya lo resolvi, solo tenia que asignar false a la propiedad de tab stop, gracias de todos modos
    • Marcado como respuesta juanitoHCPunk lunes, 9 de noviembre de 2009 19:51
    lunes, 9 de noviembre de 2009 19:51