diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs index ddd8c93173..24b461f495 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs @@ -111,7 +111,8 @@ namespace Grunwald.BooBinding.Designer Module mainModule = Parse(textEditorControl.FileName, lastTextContent); IClass formClass; - IList parts = NRefactoryDesignerLoader.FindFormClassParts(parseInfo, out formClass); + bool isFirstClassInFile; + IList parts = NRefactoryDesignerLoader.FindFormClassParts(parseInfo, out formClass, out isFirstClassInFile); IMethod initMethod = FormsDesignerSecondaryDisplayBinding.GetInitializeComponents(formClass); diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs index f760762f28..2402f92cf6 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs @@ -127,7 +127,7 @@ namespace ICSharpCode.FormsDesigner string lastTextContent; - public static IList FindFormClassParts(ParseInformation parseInfo, out IClass formClass) + public static IList FindFormClassParts(ParseInformation parseInfo, out IClass formClass, out bool isFirstClassInFile) { #if DEBUG if ((Control.ModifierKeys & (Keys.Alt | Keys.Control)) == (Keys.Alt | Keys.Control)) { @@ -136,11 +136,13 @@ namespace ICSharpCode.FormsDesigner #endif formClass = null; + isFirstClassInFile = true; foreach (IClass c in parseInfo.BestCompilationUnit.Classes) { if (FormsDesignerSecondaryDisplayBinding.BaseClassIsFormOrControl(c)) { formClass = c; break; } + isFirstClassInFile = false; } if (formClass == null) throw new FormsDesignerLoadException("No class derived from Form or UserControl was found."); @@ -170,7 +172,8 @@ namespace ICSharpCode.FormsDesigner ParseInformation parseInfo = ParserService.GetParseInformation(textEditorControl.FileName); IClass formClass; - IList parts = FindFormClassParts(parseInfo, out formClass); + bool isFirstClassInFile; + IList parts = FindFormClassParts(parseInfo, out formClass, out isFirstClassInFile); List> compilationUnits = new List>(); bool foundInitMethod = false; @@ -243,9 +246,16 @@ namespace ICSharpCode.FormsDesigner #endif LoggingService.Debug("NRefactoryDesignerLoader.Parse() finished"); + + if (!isFirstClassInFile) { + MessageService.ShowWarning("The form must be the first class in the file in order for form resources be compiled correctly.\n" + + "Please move other classes below the form class definition or move them to other files."); + } + return visitor.codeCompileUnit; } + /// /// Fix type names and remove unused methods. ///