Hola !!
Alguien podria comentarme como saber sobre que control va pasando el mouse ?
Gracias ?
| |||
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 ! |
| |||
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 |
| ||||
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 |
| |||
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 ! |
| ||||
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. |
| |||
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 ! |
| ||||
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. |
| |||
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 ! |
| ||||
Re: como saber sobre que control pasa el mouse Cita:
Iniciado por juanpablomonte ![]() 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 |
| |||
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 ! |