Regresar   Foros del Web > Programación para sitios web > .NET > win forms

El registro es Gratis en Foros del Web
Respuesta
 
Herramientas Buscar en Tema Desplegado
Antiguo 16/04/08, 10:02:04   #1 (permalink)
chatarrero ha deshabilitado el Karma
 
Registrado: abr 2008
Mensajes: 7
chatarrero is offline  
Mensaje Resaltar un TextBox cuando tiene foco!

Hola a todos...soy nuevo por aqui asi que me inauguro con esta pequeña duda:

¿Como hacer que un textbox, u otro tipo de control, se resalte cuando el usuario lo selecciona, es decir, cuando el control obtiene el focus?

Estoy desarrollando una pequeña aplicación y es preciso que cuando el usuario se vaya moviendo con el tabulador por los distintos controles vea con claridad cual es el que tiene el foco en cada momento (resaltandolo, cambiando el color de fondo, cambiando el color del borde...)


He buscado pero no he encontrado nada que me ayude. Son muchos controles así que no me sirve programar el evento OnFocus para cada uno de ellos, porque me eternizaría. Necesito un método general que funcione y que pueda reutilizar en todos los formularios.

A ver qué se os ocurre.
Gracias de antemano!
  Responder Con Cita
Antiguo 16/04/08, 11:32:33   #2 (permalink)
ultimateZERO ha deshabilitado el Karma
 
Registrado: mar 2008
Mensajes: 131
ultimateZERO is offline  
Re: Resaltar un TextBox cuando tiene foco!

hola, para cada textbox en su evento enter y leave

Código:
    Private Sub TextBox2_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.Enter
        TextBox2.BackColor = Color.Azure
    End Sub

    Private Sub TextBox2_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.Leave
        TextBox2.BackColor = Color.White
    End Sub
espero t sirve ahi em cuentas k tal t funciono
  Responder Con Cita
Antiguo 16/04/08, 14:52:12   #3 (permalink)
chatarrero ha deshabilitado el Karma
 
Registrado: abr 2008
Mensajes: 7
chatarrero is offline  
Re: Resaltar un TextBox cuando tiene foco!

Sí, seguro que funciona, pero no me vale!

Tengo decenas de textbox y otros controles, y si voy haciendo eso uno a uno voy a tardar unas cuantas horas. Tiene que haber una forma mas sencilla y que afecte de manera global...no se os ocurre nada?

  Responder Con Cita
Antiguo 16/04/08, 15:19:10   #4 (permalink)
royrojas tiene un saldo positivo de karma
 
Registrado: dic 2004
Mensajes: 376
royrojas is offline  
Re: Resaltar un TextBox cuando tiene foco!

lo que debes hacer es un UserControl que tenga un textbox y lo replicas o
creas una clase que herede de la clase de Foms.TextBox y le agregas esa propiedad y utilizas ese control en todo lugar donde necesites el texbox.
asi haces el cambio en un solo lugar y listo, se aplica para todos.
__________________
roy rojas
sitio: DotNetcr.com | foro: ForosDotNet.com | blog: the news star
  Responder Con Cita
Antiguo 16/04/08, 15:26:44   #5 (permalink)
sagma ha deshabilitado el Karma
 
Registrado: sep 2004
Ubicación: Santa Cruz
Mensajes: 100
Contactar con sagma a través de MSN Contactar con sagma a través de Yahoo
sagma is offline  
Cool Re: Resaltar un TextBox cuando tiene foco!

Espero te sirva, esto lo saque de alguna parte de la web.

Código:
    Private Sub TieneFoco(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim miTextBox As TextBox
        miTextBox = CType(sender, TextBox)
        miTextBox.BackColor = Color.Yellow
    End Sub

    Private Sub PierdeFoco(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim miTextBox As TextBox
        miTextBox = CType(sender, TextBox)
        miTextBox.BackColor = Color.White
    End Sub

    Sub Color_Textbox()
        Dim ctrl As Control
        For Each ctrl In Me.gbx_general.Controls
            If (TypeOf (ctrl) Is TextBox) Then
                Dim miTextBox As TextBox
                miTextBox = CType(ctrl, TextBox)
                AddHandler miTextBox.Enter, AddressOf TieneFoco
                AddHandler miTextBox.Leave, AddressOf PierdeFoco
            End If
        Next
    End Sub
solo llama al Color_textbox desde el evento load.

suerte
__________________
Sagma -- :arriba:
  Responder Con Cita
Antiguo 17/04/08, 01:21:22   #6 (permalink)
chatarrero ha deshabilitado el Karma
 
Registrado: abr 2008
Mensajes: 7
chatarrero is offline  
Re: Resaltar un TextBox cuando tiene foco!

Gracias sagma, era justo lo que estaba buscando! Pero algo falla...

Cuando el control tiene foco va bien, pero cuando pulso TAB para cambiar al siguiente textbox...no cambia! Se queda en el mismo textbox. Si desactivo el evento PierdeFoco sí que cambia de textbox al pulsar TAB, pero se necesita dicha funcion activa para que el tema sirve de algo

¿Por que sera que no cambia al pulsar TAB? Hace como un amago de cambiar, pero vuelve al mismo control. Es extraño
  Responder Con Cita
Antiguo 17/04/08, 07:44:44   #7 (permalink)
sagma ha deshabilitado el Karma
 
Registrado: sep 2004
Ubicación: Santa Cruz
Mensajes: 100
Contactar con sagma a través de MSN Contactar con sagma a través de Yahoo
sagma is offline  
Re: Resaltar un TextBox cuando tiene foco!

hola amigo, chatarrero, ese código, tanto en el 2003 como en el 2005 me funciona de maravillas, y no he tenido ningún problema.
__________________
Sagma -- :arriba:
  Responder Con Cita
Antiguo 18/04/08, 01:55:59   #8 (permalink)
chatarrero ha deshabilitado el Karma
 
Registrado: abr 2008
Mensajes: 7
chatarrero is offline  
Re: Resaltar un TextBox cuando tiene foco!

Pues no se entonces... Yo tengo el 2005 y programo en C# (he traducido tu codigo a C#) y funcionar funciona. Cambio de campos con el ratón y hace lo que tiene que hacer. Lo que pasa es que el Tabulador (TAB) no funciona con este código. Lo quito y todo va bien, lo vuelvo a poner y deja de funcionar el tabulador, con lo que solo me queda ir saltando de campo en campo con el ratón...pero no puede ser así.

¿No se te ocurre por qué puede ser? Es bastante extraño...

  Responder Con Cita
Antiguo 18/04/08, 02:24:19   #9 (permalink)
chatarrero ha deshabilitado el Karma
 
Registrado: abr 2008
Mensajes: 7
chatarrero is offline  
Re: Resaltar un TextBox cuando tiene foco!

He hecho unas pruebas y lo que ocurres es MUY raro...

Lo que he averiguado es que el TAB sí que funciona, solo que en lugar de saltar al siguiente textbox salta al textbox actual! Lo pulso 30 veces y sigue saltando al control actual

¿Que pasa?? Que tiene esto que ver con las funciones de antes...que si las quito el salto con el TAB funciona sin problemas..

...Estoy desesperado
  Responder Con Cita
Antiguo 18/04/08, 12:39:09   #10 (permalink)
sagma ha deshabilitado el Karma
 
Registrado: sep 2004
Ubicación: Santa Cruz
Mensajes: 100
Contactar con sagma a través de MSN Contactar con sagma a través de Yahoo
sagma is offline  
Re: Resaltar un TextBox cuando tiene foco!

como te digo, a mi, me funciona bien, pero con Visual Basic, ya sea en el 2003 y en el 2005.
__________________
Sagma -- :arriba:
  Responder Con Cita
Antiguo 23/04/08, 13:33:48   #11 (permalink)
ultimateZERO ha deshabilitado el Karma
 
Registrado: mar 2008
Mensajes: 131
ultimateZERO is offline  
Re: Resaltar un TextBox cuando tiene foco!

no sera que tienes algo mal en tu sintaxis de c#???? por k no pegas todo el codigo? o alomejor una version no actualizada del visual!! o ps ya d plano trata en otra pc y si funciona quiere decir que alomejro lo tienes mal instalado o algun archivo se danio :S
  Responder Con Cita
Antiguo 28/04/08, 11:57:05   #12 (permalink)
chatarrero ha deshabilitado el Karma
 
Registrado: abr 2008
Mensajes: 7
chatarrero is offline  
Re: Resaltar un TextBox cuando tiene foco!

He probado en otros forms de la aplicación y funciona, pero en unos cuantos me ocurre lo dicho antes: el tabulador deja de funcionar y tengo que saltar de campo en campo con el ratón.

Trabajo con Visual Studio 2005...
  Responder Con Cita
Antiguo 05/05/08, 05:31:29   #13 (permalink)
chatarrero ha deshabilitado el Karma
 
Registrado: abr 2008
Mensajes: 7
chatarrero is offline  
Solucionado!

El error de tabulación ya está. Ahora los forms tabulan perfectamente. Solo hay que meter este codigo:

Código:
  protected override bool ProcessCmdKey(ref Message m, Keys keyData)
        {
            bool blnProcess = false;

            if (keyData == Keys.Tab)
            {
                Control c = GetNextControl(this.ActiveControl, true);
                if (c is Label)
                {
                    c = GetNextControl(this.ActiveControl, true);
                }


                return c.Focus();
            }
            return false;
        }
  Responder Con Cita
Respuesta


Califica este Tema - Resaltar un TextBox cuando tiene foco!.

Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado Califica este Tema
Califica este Tema:

Reglas del foro
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está activado
Las caritas están activado
Código [IMG] está activado
Código HTML está desactivado


Todas las horas son GMT -6. La hora es 01:58:04.

Message Board Statistics

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96