I'm pretty sure when you invoke "PopupMenu" it stops the code in its tracks, and only continues when you have closed the popupwindow.

You may want to have another timer that checks the position of the mouse and if it is over the other picture boxes have it close the original popupmenu. You could have it do a sendkeys "{ESC}" if you want to do a quick hack type release. You would probably have to use a api function that gets the position of the mouse... you could potentially call the picturebox1.Mouse_Move event in the timer, but that may cause problems I don't know.

I don't really like the use of timers personally. Since I haven't played with subclassing, I couldn't advise you on how to catch all the windows events and filter the ones you want for your form.

I hope this gives you some ideas, if you need some more by all means ask.

Michael