I was working on some project in Visual Studio 2003 with many user controls in it and suddenly, I found that I cannot open any control with Forms Editor. When I double-click on the file, it opens with CSharp code editor only. I'm still unsure how did this happen, but after looking at ".csproj" file in notepad, I have found how to fix this.
Each file in .NET project is described in separate "File" node inside project file (or "Compile" node in Visual Studio 2005/2008), like in the screenshot below:
Note, the SubType attribute - this is the one that helps to pick the editor. In my case, all user controls received SubType="Code" for some unknown to me reason. So I went and updated them manually to "UserControl" and reloaded the project. After that, double-clicking on control in Solution View, opened forms editor as it should be.
For Visual Studio 2005/2008, the file XML structure is slightly different - instead of File node, there is "Compile" and SubType is not longer an attribute, but an XML node - child of "Compile" node. It's really easier to just open ".csproj" file and check it by yourself.