Foros del Web » Programación para mayores de 30 ;) » .NET »

como saber sobre que control pasa el mouse

Estas en el tema de como saber sobre que control pasa el mouse en el foro de .NET en Foros del Web. Hola !! Alguien podria comentarme como saber sobre que control va pasando el mouse ? Gracias ?...
  #1 (permalink)  
Antiguo 28/12/2007, 13:32
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 18 años, 10 meses
Puntos: 0
como saber sobre que control pasa el mouse

Hola !!

Alguien podria comentarme como saber sobre que control va pasando el mouse ?


Gracias ?
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
  #2 (permalink)  
Antiguo 01/01/2008, 20:02
Avatar de omar_cb11  
Fecha de Ingreso: septiembre-2005
Mensajes: 178
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: como saber sobre que control pasa el mouse

El evento MouseMove ocurre cuando el puntero del mouse se está moviendo sobre el componente, en ese evento le puedes colocar instrucciones que se ejecutarán cuando el mouse pase por encima del componente, es un poco tedioso pero espero te ayude. Saludos
__________________
A veces hay que darle un golpecito al Pc para que funcione.
  #3 (permalink)  
Antiguo 02/01/2008, 07:03
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: como saber sobre que control pasa el mouse

Omar_cb11:
Amigo muchas Gracias por contestar !!!, tengo que decir que conocía lo que me propones, pero el caso, es que yo debería codificar el evento mousemove, o mousehover para cada control que pongo en mi form, incluso hacer un delegado para algunos componentes que genero en tiempo de ejecucion... y eso no es precisamente lo mas eficiente...

Yo leí en un foro de delphi, ( otro lenguaje visual), una funcion que detectaba los pixel donde se situaba el mouse, y comparaba con los que abarcaba cada control... y eso lo hacia cada vez que el mouse se movia sobre el form. entonces cuando el puntero estaba dentro de x = 10 e y= 300, y existia algun control que este abarcando esa posicion, te retornaba el nombre de ese control. algo asi es lo que necesito pero para vis basic o c#.

Mi idea es hacer una funcion que haga eso, y me llene una variable global tipo object, con el objeto devuelto por la funcion, para entonces poder consultar esa variable, desde cualquier sub y si el caso de aplicacion resulta = true, poder manipular el control almacenado en la variable... por ejemplo, si es un picture box por donde paso el mouse, y se llama pict1, me lo retorna como objeto a la variable, y yo puedo cambiarle la imagen que muestra. algo parecido hacen los tooltips, detectan sobre que componente paso, por mas que sea creado en tiempo de ejecucion, y muestra un globo con texto....

Si me puedes ayudar te lo agradeceré mucho
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !

Última edición por juanpablomonte; 02/01/2008 a las 07:11
  #4 (permalink)  
Antiguo 02/01/2008, 09:08
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Re: como saber sobre que control pasa el mouse

´Puedes hacer algo como esto

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
Point xx=new Point(e.X,e.Y);// Punto del mouse
try
{
MessageBox.Show(this.GetChildAtPoint(this.PointToS creen(xx)).GetType().ToString());
}
catch(Exception ex)
{
}
}

saludos

Peterpay
  #5 (permalink)  
Antiguo 02/01/2008, 12:13
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: como saber sobre que control pasa el mouse

peterpay:

Gracias por tu ejemplo; esta bueno, y entre todos nos vamos acercando... pero en tu ejemplo solo me devuelve el nombre del tipo de objeto cuando el mouse se mueve sobre ese control, pero no si me muevo sobre cualquier otro... entonces, tendría que codificar el evento mousemove de todos los controles que tengo en el form y estaría de nuevo en la misma situacion que le planteo a Omar_cb11

Me parece que debo utilizar alguna api de win, que me permita detectar la posicion del mouse permanentemente sin la necesidad de tomarla con un evento mousemove...

Gracias a todos por sus ideas... pero aun no resuelvo mi problema...
yo seguire intentando... espero su ayuda, pues se me complico muchisimo todo esto.
Gracias !!!!
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
  #6 (permalink)  
Antiguo 02/01/2008, 18:16
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Re: como saber sobre que control pasa el mouse

Se me ocurre algo asi

public partial class Form1 : Form
{
Timer myTimer;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
myTimer = new Timer();
myTimer.Interval = 1000;
myTimer.Tick += new EventHandler(myTimer_Tick);
myTimer.Start();
}

void myTimer_Tick(object sender, EventArgs e)
{
Point x=new Point();
if (MouseControl.GetCursorPos(ref x)>0)
{
try
{
MessageBox.Show(this.GetChildAtPoint(x).GetType(). ToString());
}
catch (Exception ex)
{

}
}

}
}

public class MouseControl
{
[DllImport("user32")]
public static extern int GetCursorPos(ref Point lpPoint);
}

lo ineficiente es el timer.
  #7 (permalink)  
Antiguo 03/01/2008, 08:06
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: como saber sobre que control pasa el mouse

peterpay:

MUCHAS GRACIAS COMPAÑERO, DE VERDAD es una solucion ! ... lo del timer, es en definitiva mejor que codificar uno por uno los eventos mousemove.

creo que con esto resuelvo el problema.
Agradezco mucho tu dedicacion.

Si te puedo ayudar en algo alguna vez, te dejo mi e-mail [email protected]
Gracias
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
  #8 (permalink)  
Antiguo 03/01/2008, 08:10
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Re: como saber sobre que control pasa el mouse

Pero... ¿A caso no te vale con el Evento que tienen todos los controles? (MouseHover)
__________________
Charlie.
  #9 (permalink)  
Antiguo 03/01/2008, 09:26
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 10 meses
Puntos: 50
Re: como saber sobre que control pasa el mouse

Podrías haber creado un evento heredado (con el mousehover) como dice CHCMA y todo funcionaría de una forma chipocluda :borracho
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #10 (permalink)  
Antiguo 03/01/2008, 12:22
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: como saber sobre que control pasa el mouse

hola amigos..

El problema es que necesito saber por donde pasa el mouse sin la necesidad de que se dispare ningun evento referido al control en sí mismo... al modo del tooltip, que realiza una accion cuando pasa el mouse por el control Y NO PROVOCA EVENTO ALGUNO SOBRE ESE CONTROL sino en el tooltip mismo. Es muy caprichoso, pero es así como lo necesito. Se que con el evento mousemove o mouse hover se puede tomar la posicion del puntero pero la solucion que me propuso peterpay es la que mas se amolda a mi necesidad hasta el momento. GRACIAS A TODOS por su ayuda !!!

Debo decir que con gente como Uds. este foro es una gran herramienta.

Saludos !
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
  #11 (permalink)  
Antiguo 06/01/2008, 14:37
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Re: como saber sobre que control pasa el mouse

Bueno, si crees que eso es más optimo para tu aplicación pues adelante.
__________________
Charlie.
  #12 (permalink)  
Antiguo 06/01/2008, 17:21
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años
Puntos: 16
Re: como saber sobre que control pasa el mouse

Cita:
Iniciado por juanpablomonte Ver Mensaje
hola amigos..

El problema es que necesito saber por donde pasa el mouse sin la necesidad de que se dispare ningun evento referido al control en sí mismo... al modo del tooltip, que realiza una accion cuando pasa el mouse por el control Y NO PROVOCA EVENTO ALGUNO SOBRE ESE CONTROL sino en el tooltip mismo. Es muy caprichoso, pero es así como lo necesito. Se que con el evento mousemove o mouse hover se puede tomar la posicion del puntero pero la solucion que me propuso peterpay es la que mas se amolda a mi necesidad hasta el momento. GRACIAS A TODOS por su ayuda !!!

Debo decir que con gente como Uds. este foro es una gran herramienta.

Saludos !

Ola compañero si lo que estas buscando es manejar varios controles que contengan el evento MouseHover...

Aquí te dejo un ejemplo...


PrivateSub btnExaminar_MouseHover(ByVal sender AsObject, ByVal e As System.EventArgs) Handles btnExaminar.MouseHover, btnSubir.MouseHover
If sender.Equals(Me.btnSubir) Then
Me.LblEstado.Text = "SUBIR"
ElseIf sender.Equals(Me.btnExaminar) Then
Me.LblEstado.Text = "EXAMINAR"
EndIf
EndSub


Yo contengo todos los controles que yo elija dentro de ese manejador de eventos, tansolo tengo k comparar:

If sender.Equals(Me.BtnAceptar) then
.....INSTRUCCIONES
End If
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)

Última edición por Drako_18; 06/01/2008 a las 17:25 Razón: Corrección
  #13 (permalink)  
Antiguo 07/01/2008, 06:57
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: como saber sobre que control pasa el mouse

Drako_18:

Hola amigo: Gracias por tu ayuda y por la gentileza; pero lo que intento hacer, es un ocx; es un control diseñado por mi, que tine varios controles en si, y que el usuario usara con su mouse; es para trazar diagramas de pert para planificacion de proyectos. al ser un control hecho desde 0, hay algunos sectores del grafico que no tienen mas que un dibujo..., eso no se puede manipular con un evento mousehover por que no hay evento alguno. Pero si puedo detectar en todo momento sobre que sector esta pasando el mouse, y agregar una accion a realizar cuando pasa por el sector que yo necesite, entonces podré crear un evento particular pára mi control... Es algo muy caprichoso, pero es mi gran desafípo. cuando termine mi ocx, se los mandare a su correo para que puedan ver como trabaja.

La idea es que el usuario arrastre una tarea, y el componente dibuje el grafico de pert con el nodo correspondiente, y su camino critico. ( Tecnicas de Administracion de Organizaciones )


Les agradezco a Todos ! cuenten con migo para lo que necesiten.
Saludos
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:04.