title: Why do Cursor.Show() and Cursor.Hide() not immediately hide or show the cursor?
body: <p>I'm writing a drag system for a visualizer. When you click and drag, it moves what you see in the window. When the mouse hits the edge of the panel, I start repositioning the cursor so it never leaves the box. It keeps track of a virtual position where the cursor would be if it were inside the box. This portion of the code works fine.</p>
  
  <p>Any time there is a MouseMoved event and the position is inside the box, I do Cursor.Show(). If it's outside the box, I do Cursor.Hide(). When the user lets go of the mouse button, I do Cursor.Show().</p>
  
  <p>There are multiple issues. When the first Hide call happens, it doesn't hide. I have to get the cursor's virtual position outside the containing window for the hide to happen. When I move back in, it doesn't become visible, even though Show is being called. Finally, when releasing the mouse button, the cursor does not appear despite Show being called.</p>
  
  <p>Rather than ask people to debug my code, I'm just wondering what's going on in the event system that makes Cursor.Hide/Show not work the way I'm expecting it to. My impression was that if a Control called Hide, the cursor would be hidden any time it was inside that control; likewise if I call show from a Control.</p>