diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index b5561ac7a4..1e06136346 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -197,7 +197,7 @@
Form
- UserControl
+ Form
Form
@@ -265,7 +265,7 @@
Form
- UserControl
+ Component
@@ -685,7 +685,6 @@
{35cef10f-2d4c-45f2-9dd1-161e0fec583c}
ICSharpCode.Core
-
\ No newline at end of file
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs
index 9d9d651fff..6b8c2ac36e 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs
@@ -131,7 +131,20 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
return 0;
}
+ string cachedString;
+
public override string ToString()
+ {
+ // ambience lookups can be expensive when the return type is
+ // resolved on the fly.
+ // Therefore, we need to cache the generated string because it is used
+ // very often for the sorting.
+ if (cachedString == null)
+ cachedString = ToStringInternal();
+ return cachedString;
+ }
+
+ string ToStringInternal()
{
IAmbience ambience = AmbienceService.CurrentAmbience;
ambience.ConversionFlags = ConversionFlags.ShowParameterNames;