Obtaining control under mouse

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Johnny Jensen

    Obtaining control under mouse

    Hello Group

    In the old days i'ev created a VB6 appl. that was able to obtain the
    underlaying control under the mouse pointer. I would very much like to do
    that in a C# application. I'll use VS2005 and .Net 2.0

    I'll know of the solution to code each control for the mouse over event, but
    I cant use that i this case.

    Any one outthere with som examples?

    Kind regards
    Johnny Jensen


  • Michael C

    #2
    Re: Obtaining control under mouse

    "Johnny Jensen" <jej@aaa.dkwrot e in message
    news:uK$Oh8DCHH A.4740@TK2MSFTN GP03.phx.gbl...
    Hello Group
    >
    In the old days i'ev created a VB6 appl. that was able to obtain the
    underlaying control under the mouse pointer. I would very much like to do
    that in a C# application. I'll use VS2005 and .Net 2.0
    >
    I'll know of the solution to code each control for the mouse over event,
    but I cant use that i this case.
    >
    Any one outthere with som examples?
    interate through the controls collection and attach the mousemove event for
    every control and then use Control.GetChil dAtPoint in the event to find the
    control the mouse it over.

    Michael


    Comment

    • Johnny Jensen

      #3
      Re: Obtaining control under mouse

      Hey Michael

      Thanks for replying and it gave me some hint, but mabye i'am a bit slow
      here.

      Say that i'll have a label control on my form in the rectangle 20,20,120,36
      on the forms mousemove event I read the x any y values to get the point, but
      the secund i reach the label the forms mousemove no longer runs - now it is
      the labels mousemove event that runs, and the reading of x,y will now be
      wrong.

      So that way i'll never get the Control.GetChil dAtPoint to be anything else
      but null. but if i'll in the forms mousemove event get the x,y and look at
      x+1,y-1 ( or something like that ) i'll get the control when i'am almost
      over the label.

      Could you give me some more hints?

      Kind regards
      Johnny Jensen


      "Michael C" <nospam@nospam. comwrote in message
      news:eJlNqUECHH A.4256@TK2MSFTN GP04.phx.gbl...
      "Johnny Jensen" <jej@aaa.dkwrot e in message
      news:uK$Oh8DCHH A.4740@TK2MSFTN GP03.phx.gbl...
      >Hello Group
      >>
      >In the old days i'ev created a VB6 appl. that was able to obtain the
      >underlaying control under the mouse pointer. I would very much like to do
      >that in a C# application. I'll use VS2005 and .Net 2.0
      >>
      >I'll know of the solution to code each control for the mouse over event,
      >but I cant use that i this case.
      >>
      >Any one outthere with som examples?
      >
      interate through the controls collection and attach the mousemove event
      for every control and then use Control.GetChil dAtPoint in the event to
      find the control the mouse it over.
      >
      Michael
      >

      Comment

      • Ben Voigt

        #4
        Re: Obtaining control under mouse


        "Johnny Jensen" <jej@aaa.dkwrot e in message
        news:ecyuQpPCHH A.4224@TK2MSFTN GP06.phx.gbl...
        Hey Michael
        >
        Thanks for replying and it gave me some hint, but mabye i'am a bit slow
        here.
        >
        Say that i'll have a label control on my form in the rectangle
        20,20,120,36 on the forms mousemove event I read the x any y values to get
        the point, but the secund i reach the label the forms mousemove no longer
        runs - now it is the labels mousemove event that runs, and the reading of
        x,y will now be wrong.
        >
        So that way i'll never get the Control.GetChil dAtPoint to be anything else
        but null. but if i'll in the forms mousemove event get the x,y and look at
        x+1,y-1 ( or something like that ) i'll get the control when i'am almost
        over the label.
        >
        Could you give me some more hints?
        You can do:

        MouseMove += Form_MouseMove;
        foreach (Control c in Controls)
        c.MouseMove += Form_MouseMove;

        then in
        void Form_MouseMove( object sender, MouseEventArgs e)
        sender is the control beneath the mouse (you can surely cast it to Control),
        and e will contain the relative coordinates to the upper left of sender.
        >
        Kind regards
        Johnny Jensen
        >
        >
        "Michael C" <nospam@nospam. comwrote in message
        news:eJlNqUECHH A.4256@TK2MSFTN GP04.phx.gbl...
        >"Johnny Jensen" <jej@aaa.dkwrot e in message
        >news:uK$Oh8DCH HA.4740@TK2MSFT NGP03.phx.gbl.. .
        >>Hello Group
        >>>
        >>In the old days i'ev created a VB6 appl. that was able to obtain the
        >>underlaying control under the mouse pointer. I would very much like to
        >>do that in a C# application. I'll use VS2005 and .Net 2.0
        >>>
        >>I'll know of the solution to code each control for the mouse over event,
        >>but I cant use that i this case.
        >>>
        >>Any one outthere with som examples?
        >>
        >interate through the controls collection and attach the mousemove event
        >for every control and then use Control.GetChil dAtPoint in the event to
        >find the control the mouse it over.
        >>
        >Michael
        >>
        >
        >

        Comment

        • Michael C

          #5
          Re: Obtaining control under mouse

          "Johnny Jensen" <jej@aaa.dkwrot e in message
          news:ecyuQpPCHH A.4224@TK2MSFTN GP06.phx.gbl...
          So that way i'll never get the Control.GetChil dAtPoint to be anything else
          but null. but if i'll in the forms mousemove event get the x,y and look at
          x+1,y-1 ( or something like that ) i'll get the control when i'am almost
          over the label.
          >
          Could you give me some more hints?
          In addition to what Ben said, you should add label1.x and label1.y to your x
          and y values.

          Michael


          Comment

          Working...