• Viernes 8 de Noviembre de 2024, 15:52

Autor Tema:  Saber Si Esta Asigando El Focus  (Leído 7836 veces)

Javis

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Saber Si Esta Asigando El Focus
« en: Jueves 20 de Septiembre de 2007, 14:09 »
0
Muy buenas a todos, a ver si alguien me puede ayudar con el problemilla que tengo.


A ver lo que quiero es: saber cuando un control(textbox,datagrid,buttom) tiene el focus asignado para poder actuar en consecuencia.


Un saludo y gracias de antemano. :comp:

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Saber Si Esta Asigando El Focus
« Respuesta #1 en: Jueves 20 de Septiembre de 2007, 18:53 »
0
:blink:  
Cuando el objeto ya tiene el foco , se posiciona el cursor donde le dijiste ..!!!! o sea donde pusiste el foco ..!!!!  :P

Tambien podrias hacer que se seleccione todo el texto que contenga el textbox,..

 :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Javis

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Saber Si Esta Asigando El Focus
« Respuesta #2 en: Jueves 20 de Septiembre de 2007, 19:26 »
0
:lol:
JEJE tienes razon, pero no me referia a asignarlo yo mediante codigo, sino a por ejemplo que yo pique sobre un textbox de esa forma tiene el focus ese control. y yo no lo he asignado con el codigo sino el usuario.

Lo que queria es saber como preguntar si ese control tenia el focus.

Pero tranquilo que creo que lo tengo solucionado, si veo que me funciona lo pongo aqui.

Un saludo y gracias

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Saber Si Esta Asigando El Focus
« Respuesta #3 en: Jueves 20 de Septiembre de 2007, 19:58 »
0
en diseño ... pincha (doble-click) en uno de esos controles que quieres controlar, por ejemplo un textbox...

se te abre la ventana de código por el evento text1_click ...bien arriba del todo en el combo de la derecha (sin salir de la ventana de código) tienes todos los métodos que admite el control actualmente seleccionado en el cóodigo.

Localiza el evento gotFocus.... y pincha en él.... cuando el control del programa llegue allí tiene el foco...

Ahora pregúntame como controlas cunado mueves el cursor sobre un control o cuando levantas el ratón de un control....
«Ma non troppo»
----> ModoVacaciones = False<----

Javis

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Saber Si Esta Asigando El Focus
« Respuesta #4 en: Jueves 20 de Septiembre de 2007, 20:14 »
0
Cita de: "Nebire"
Ahora pregúntame como controlas cunado mueves el cursor sobre un control o cuando levantas el ratón de un control....
No se porque me dices eso, pero bueno, decirte que lo de los eventos del textbox ya los mire y los de gotfocus o lostfocus no aparecen en el vb .net 2003 o al menos en el mio, o a lo mejor busco donde no es.

Pero como bien dije creo tenerlo solucionado y si es asi lo publicare aqui.

Un saludo

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Saber Si Esta Asigando El Focus
« Respuesta #5 en: Viernes 21 de Septiembre de 2007, 23:35 »
0
yo anduve por el 2003 sólo de pasada me pasé rápido al 2005 y no recuerdo ahora si el 2003 incluía o no esos eventos, en cualquier caso es probable que los llamaran con otro nombre

Pero te recomiendo que te pases al 2005...  incorporó nuevas mejoras, mayor compatibilidad con el VB6 (por si venías de allí) y corrección de rrores, además así no te quedarás descolgado... el 2008 está ya en el bote, cuanto antes se pille la 'onda' menos anticuado se queda tu software...
«Ma non troppo»
----> ModoVacaciones = False<----

Knight Lore

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Saber Si Esta Asigando El Focus
« Respuesta #6 en: Sábado 22 de Septiembre de 2007, 00:56 »
0
Hola Javis.
La propiedad Focused de cada control (esta en todos ya que pertenece a la clase base Control) te indica si el control posee focus o no.
Probala, porque no me acuerdo bien pero en algun momento la use y creo que me trajo algunos incovenientes, aunque segun el manual y lo que entiendo de tu pregunta deberia ser eso lo que buscas.

Javis

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Saber Si Esta Asigando El Focus
« Respuesta #7 en: Martes 25 de Septiembre de 2007, 18:39 »
0
Lo que encontre para solucionar el problema fue esto:

    Public Overrides ReadOnly Property Focused() As Boolean
        Get

        End Get
    End Property

mas o menos lo que alguno me habia dicho, con la diferencia que lo tuve que poner yo mismo en el codigo y que no estaba en los eventos de los controles :P


Un saludito y gracias a todos

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Saber Si Esta Asigando El Focus
« Respuesta #8 en: Miércoles 26 de Septiembre de 2007, 04:29 »
0
Pero es una propiedad, no un evento.  Eso significa que si deseas saber en un momento dado quien tiene el foco tendrías que recorrer toda la colección de controles para localizar a quien lo tiene. Por otro lado, no hay reacción, es decir si quieres lanzar un cóodigo al ganar el foco un objeto concreto, tendrás un problema de sincronización, suponiendo que lo captures con la propiedad, será a destiempo y consumiendo demasiados recursos...

Es raro que en el net.2003 olvidaran añadir dichos eventos... pásate cuando puedas al 2005... te lo recomiendo.
«Ma non troppo»
----> ModoVacaciones = False<----

Knight Lore

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Saber Si Esta Asigando El Focus
« Respuesta #9 en: Miércoles 26 de Septiembre de 2007, 17:34 »
0
Habia entendido que solo necesitaba saber cual era el que tenia el foco, pero como bien dice Nebire puede ser un poco arduo si todo el tiempo se esta buscando en los controles. Quizas este codigo te de mejor resultado.

Código: Text
  1. Dim FocusedControl As Control
  2.  
  3. Private Sub ControlGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles textbox1.GotFocus, _
  4. combo1.GotFocus, dtpicker1.GotFocus
  5. 'agregar en el Handles todos los controles que se quieran monitorear
  6.     FocusedControl = DirectCast(sender, Control)
  7. End Sub
  8.  
  9. Private Sub HacerAlgoConControlFocused()
  10.     If Not FocusedControl Is Nothing Then
  11.         'hacer aca lo que se desee con el control
  12.         FocusedControl.Text = &#34;focused&#34;
  13.     End If
  14. End Sub
  15.