I am developing a standalone application using Visual Studio 2008, specifically Visual C# and the .NET Framework version 3.5. The application has various windows, which come and go based on what the user happens to be doing.
On my development machine, which is running Windows XP SP3, the windowing behavior is "normal". On my co-worker's machine, which is running Windows Vista, the windowing behavior is also "normal". But on a client's machine, running Windows XP SP3 like mine, the windowing behavior exhibits strange behavior.
Here's a specific example of the strange behavior. When the application first starts up, there is a main window, and a child window that is not created or displayed until the main window's Form_Shown event has fired. On the two "normal" machines, the child window pops up in front of the main window, as is intended. On the aberrant machine, the child window pops up behind the main window. Please note that the C# code includes the specific line childWindow.BringToFront() to explicitly bring the child window to the front. On the aberrant machine, this is not happening.
I have another case where a different child window is Shown() when a specific application-generated event fires, and then is hidden automatically when a different, subsequent application-generated event fires. On the two "normal" machines, this child window correctly appears and disappears as designed. On the aberrant machine, the window appears as intended, but does not disappear. It appears that the event that triggers the child window to hide is not being properly sent or received on the aberrant machine.
The client was running version 3.0 of the .NET Framework, so the first thing we did was upgrade his machine to version 3.5, to bring it up to the same version we developers have. This did not make any discernible difference to the issue.
Any suggestions regarding where to look next would be greatly appreciated. I will not be able to post specific sections of code, unfortunately. I will be happy to answer specific questions about the application or environment, if that helps in a diagnosis.