I have a c# Windows Forms application, using .NET 3.5.
My machine environment is as follows:
I have a UserControl-derived custom control that contains a few other UserControls.
I bring up the main UserControl in the Windows Forms Designer in Visual Studio, then I start to click on the various embedded UserControls and randomly change some properties, like Text. I then click the Save toolbar button. I then continue to make more changes to the properties of the controls, and click Save.
After some point in time (and this is not predictable), Visual Studio will display an error dialog.
The WinForms designer displays a modal dialog with a title of "Microsoft Visual Studio", and a two-line message, "Value cannot be null. Parameter name: context", and an OK button.
Unfortunately, after dismissing this dialog by clicking the OK button, Visual Studio has now corrupted my Form's designer-generated code. The only way to restore my code is from a backup file.
The only workaround I've found is to set Localizable to false for the UserControl in the Properties window. This is not a long term workaround since I need this UserControl to be localizable in our production code.
My project is fairly simple, no web services, etc.
I've tried debugging using another instance of Visual Studio to see if I could catch any exceptions, but no exceptions are generated. There is no debug output of any importance.
Has any one else seen this issue? Looking for suggestions.
More Information...
I was able to successfully attached a second instance of Visual Studio and determine that indeed an exception was being thrown. (I had to uncheck the "Just My Code" debugging option, and enable the symbol server, etc.).
Apparently, when I click Save in the WinForm Designer, a System.ArgumentNullException is occuring in System.dll, in method System.ComponentModel.Design.Serialization.ContextStack.Push( object context ). So, the context parameter is null, which is the problem. Still no clue why this is happening.
Here is the stack trace:
System.dll!System.ComponentModel.Design.Serialization.ContextStack.Push(object context) + 0x88 bytes
System.Design.dll!System.ComponentModel.Design.Serialization.ResourceCodeDomSerializer.ApplyCacheEntry(System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager = {System.ComponentModel.Design.Serialization.DesignerSerializationManager}, System.ComponentModel.Design.Serialization.ComponentCache.Entry entry) + 0x10e bytes
System.Design.dll!System.ComponentModel.Design.Serialization.ComponentCodeDomSerializer.Serialize(System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager = {System.ComponentModel.Design.Serialization.DesignerSerializationManager}, object value = {ReveilleSystem.UserInterface.BoldLabel}) + 0xf64 bytes
System.Design.dll!System.Windows.Forms.Design.ControlCodeDomSerializer.Serialize(System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager = {System.ComponentModel.Design.Serialization.DesignerSerializationManager}, object value = {ReveilleSystem.UserInterface.BoldLabel}) + 0x83 bytes
System.Design.dll!System.ComponentModel.Design.Serialization.CodeDomSerializerBase.SerializeToExpression(System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager = {System.ComponentModel.Design.Serialization.DesignerSerializationManager}, object value = {ReveilleSystem.UserInterface.BoldLabel}) + 0x173 bytes
System.Design.dll!System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Serialize(System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager = {System.ComponentModel.Design.Serialization.DesignerSerializationManager}, object root = {ReveilleSystem.UserInterface.WizardEditors.EditorBase}, System.Collections.ICollection members = {System.ComponentModel.ComponentCollection}) + 0x195 bytes
System.Design.dll!System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformFlush(System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager = {System.ComponentModel.Design.Serialization.DesignerSerializationManager}) + 0x7e bytes
System.Design.dll!System.ComponentModel.Design.Serialization.BasicDesignerLoader.Flush() + 0x111 bytes
Microsoft.VisualStudio.Design.dll!Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.Flush() + 0xa0 bytes
System.Design.dll!System.ComponentModel.Design.DesignSurface.Flush() + 0x21 bytes
Microsoft.VisualStudio.Shell.Design.dll!Microsoft.VisualStudio.Shell.Design.DesignerWindowPane.OnFlush() + 0x33 bytes
Microsoft.VisualStudio.Shell.Design.dll!Microsoft.VisualStudio.Shell.Design.DesignerWindowPane.Microsoft.VisualStudio.Shell.Interop.IVsBatchUpdate.FlushPendingUpdates(uint reserved) + 0x2a bytes
Microsoft.VisualStudio.Editor.Implementation.dll!Microsoft.VisualStudio.Editor.Implementation.VsTextBufferAdapter.Microsoft.VisualStudio.Shell.Interop.IVsBatchUpdate.FlushPendingUpdates(uint dwReserved) + 0x97 bytes Microsoft.VisualStudio.Editor.Implementation.dll!Microsoft.VisualStudio.Editor.Implementation.VsTextBufferAdapter.Save(string pszFilename = "C:\Temp\Reveille_KofaxMFP - Version 2\Editors\Connectivity.Designer.cs", int fRemember = 1, uint nFormatIndex = 0) + 0x2f bytes
[Native to Managed Transition]
msenv.dll!DllUnregisterServer() + 0x10c990 bytes
[Frames below may be incorrect and/or missing, no symbols loaded for msenv.dll] msenv.dll!DllUnregisterServer() + 0x10cce8 bytes
msenv.dll!DllUnregisterServer() + 0x3e1d6 bytes
[Managed to Native Transition]
Microsoft.VisualStudio.Editor.Implementation.dll!Microsoft.VisualStudio.Editor.Implementation.VsDocDataAdapter.SaveDocData(Microsoft.VisualStudio.Shell.Interop.VSSAVEFLAGS dwSave, out string pbstrMkDocumentNew, out int pfSaveCanceled) + 0x7e bytes [Native to Managed Transition]
csproj.dll!DllGetClassObject() + 0x14e87 bytes msenv.dll!DllUnregisterServer() + 0x12cbc9 bytes
msenv.dll!DllUnregisterServer() + 0x12c940 bytes
msenv.dll!VStudioTerm() + 0x4ab22 bytes
msenv.dll!VStudioMain() + 0x1bb97 bytes
msenv.dll!VStudioMain() + 0x1b74c bytes
msenv.dll!VStudioTerm() + 0x3ba6d bytes
msenv.dll!VStudioMain() + 0x1b8e1 bytes
[Managed to Native Transition]
Microsoft.VisualStudio.Shell.Design.dll!Microsoft.VisualStudio.Shell.Design.Serialization.DesignerDocDataService.LockedDocData.Save() + 0xbc bytes
Microsoft.VisualStudio.Shell.Design.dll!Microsoft.VisualStudio.Shell.Design.Serialization.DesignerDocDataService.Microsoft.VisualStudio.Shell.Interop.IVsRunningDocTableEvents.OnAfterSave(uint docCookie) + 0x124 bytes
[Native to Managed Transition]
msenv.dll!DllUnregisterServer() + 0xd6984 bytes
msenv.dll!DllUnregisterServer() + 0xd68f0 bytes
msenv.dll!DllUnregisterServer() + 0x12cc40 bytes
msenv.dll!DllUnregisterServer() + 0x12c940 bytes
msenv.dll!VStudioTerm() + 0x4ab22 bytes
msenv.dll!VStudioMain() + 0x1bb97 bytes
msenv.dll!VStudioMain() + 0x1b74c bytes
msenv.dll!VStudioTerm() + 0x3ba6d bytes
msenv.dll!VStudioMain() + 0x1b8e1 bytes
msenv.dll!DllUnregisterServer() + 0x34e5c bytes
msenv.dll!DllMain() + 0x5c5 bytes
msenv.dll!DllMain() + 0x2609d bytes
msenv.dll!DllMain() + 0x265a7 bytes
msenv.dll!DllUnregisterServer() + 0x170768 bytes
msenv.dll!DllUnregisterServer() + 0x1e56f8 bytes
msenv.dll!DllMain() + 0x1ea7f bytes
msenv.dll!DllMain() + 0x1e70b bytes
msenv.dll!DllUnregisterServer() + 0x170894 bytes
msenv.dll!DllUnregisterServer() + 0x378a71 bytes
msenv.dll!DllUnregisterServer() + 0x378bb8 bytes
msenv.dll!DllUnregisterServer() + 0x378aa1 bytes
msenv.dll!6861124f()
[Managed to Native Transition]
Microsoft.VisualStudio.Shell.10.0.dll!Microsoft.Internal.VisualStudio.PlatformUI.DataSource.Invoke(string verb, object pvaIn, out object pvaOut) + 0x21 bytes
Microsoft.VisualStudio.Shell.UI.Internal.dll!Microsoft.VisualStudio.PlatformUI.VsCommand.Execute(object parameter) + 0x29 bytes PresentationFramework.dll!MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(System.Windows.Input.ICommandSource commandSource, bool userInitiated) + 0xb4 bytes
PresentationFramework.dll!System.Windows.Controls.Primitives.ButtonBase.OnClick() + 0x54 bytes
PresentationFramework.dll!System.Windows.Controls.Button.OnClick() + 0x4d bytes PresentationFramework.dll!System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e) + 0x9e bytes
PresentationCore.dll!System.Windows.UIElement.OnMouseLeftButtonUpThunk(object sender, System.Windows.Input.MouseButtonEventArgs e) + 0x6c bytes PresentationCore.dll!System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(System.Delegate genericHandler, object genericTarget) + 0x31 bytes
PresentationCore.dll!System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate handler, object target) + 0x29 bytes
PresentationCore.dll!System.Windows.RoutedEventHandlerInfo.InvokeHandler(object target, System.Windows.RoutedEventArgs routedEventArgs) + 0x3e bytes
PresentationCore.dll!System.Windows.EventRoute.InvokeHandlersImpl(object source = {Microsoft.VisualStudio.PlatformUI.VsButton}, System.Windows.RoutedEventArgs args = {System.Windows.Input.MouseButtonEventArgs}, bool reRaised = true) + 0xbe bytes
PresentationCore.dll!System.Windows.UIElement.ReRaiseEventAs(System.Windows.DependencyObject sender = {Microsoft.VisualStudio.PlatformUI.VsButton}, System.Windows.RoutedEventArgs args = {System.Windows.Input.MouseButtonEventArgs}, System.Windows.RoutedEvent newEvent) + 0x114 bytes
PresentationCore.dll!System.Windows.UIElement.OnMouseUpThunk(object sender, System.Windows.Input.MouseButtonEventArgs e) + 0xc5 bytes
PresentationCore.dll!System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(System.Delegate genericHandler, object genericTarget) + 0x31 bytes
PresentationCore.dll!System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate handler, object target) + 0x29 bytes
PresentationCore.dll!System.Windows.RoutedEventHandlerInfo.InvokeHandler(object target, System.Windows.RoutedEventArgs routedEventArgs) + 0x3e bytes
PresentationCore.dll!System.Windows.EventRoute.InvokeHandlersImpl(object source = {Microsoft.VisualStudio.PlatformUI.VsButton}, System.Windows.RoutedEventArgs args = {System.Windows.Input.MouseButtonEventArgs}, bool reRaised = false) + 0xbe bytes
PresentationCore.dll!System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject sender = {Microsoft.VisualStudio.PlatformUI.VsButton}, System.Windows.RoutedEventArgs args = {System.Windows.Input.MouseButtonEventArgs}) + 0x79 bytes PresentationCore.dll!System.Windows.UIElement.RaiseTrustedEvent(System.Windows.RoutedEventArgs args = {System.Windows.Input.MouseButtonEventArgs}) + 0x41 bytes PresentationCore.dll!System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs args, bool trusted) + 0x2c bytes
PresentationCore.dll!System.Windows.Input.InputManager.ProcessStagingArea() + 0x1ff bytes
PresentationCore.dll!System.Windows.Input.InputManager.ProcessInput(System.Windows.Input.InputEventArgs input) + 0x45 bytes PresentationCore.dll!System.Windows.Input.InputProviderSite.ReportInput(System.Windows.Input.InputReport inputReport) + 0x62 bytes
PresentationCore.dll!System.Windows.Interop.HwndMouseInputProvider.ReportInput(System.IntPtr hwnd, System.Windows.Input.InputMode mode, int timestamp, System.Windows.Input.RawMouseActions actions, int x, int y, int wheel) + 0x2c2 bytes PresentationCore.dll!System.Windows.Interop.HwndMouseInputProvider.FilterMessage(System.IntPtr hwnd = 1837128, MS.Internal.Interop.WindowMessage msg = WM_LBUTTONUP, System.IntPtr wParam = 0, System.IntPtr lParam = 2293872, ref bool handled = false) + 0x67d bytes
PresentationCore.dll!System.Windows.Interop.HwndSource.InputFilterMessage(System.IntPtr hwnd = 1837128, int msg = 514, System.IntPtr wParam = 0, System.IntPtr lParam = 2293872, ref bool handled = false) + 0x75 bytes WindowsBase.dll!MS.Win32.HwndWrapper.WndProc(System.IntPtr hwnd = 1837128, int msg = 514, System.IntPtr wParam = 0, System.IntPtr lParam = 2293872, ref bool handled = false) + 0xbe bytes
WindowsBase.dll!MS.Win32.HwndSubclass.DispatcherCallbackOperation(object o) + 0x7d bytes
WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs) + 0x53 bytes WindowsBase.dll!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(object source = {System.Windows.Threading.Dispatcher}, System.Delegate method, object args, int numArgs, System.Delegate catchHandler = null) + 0x42 bytes WindowsBase.dll!System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority priority, System.TimeSpan timeout, System.Delegate method, object args, int numArgs) + 0xb4 bytes
WindowsBase.dll!MS.Win32.HwndSubclass.SubclassWndProc(System.IntPtr hwnd = 1837128, int msg = 514, System.IntPtr wParam = 0, System.IntPtr lParam = 2293872) + 0x104 bytes
user32.dll!gapfnScSendMessage() + 0x1cf bytes
user32.dll!gapfnScSendMessage() + 0x2cf bytes
user32.dll!gapfnScSendMessage() + 0x901 bytes
user32.dll!DispatchMessageW() + 0xf bytes
msenv.dll!DllGetClassObject() + 0x37521 bytes
msenv.dll!DllGetClassObject() + 0x375aa bytes
msenv.dll!DllCanUnloadNow() + 0x190f bytes msenv.dll!DllCanUnloadNow() + 0x1840 bytes msenv.dll!DllCanUnloadNow() + 0x17a1 bytes msenv.dll!DllCanUnloadNow() + 0x176e bytes msenv.dll!DllCanUnloadNow() + 0x16b0 bytes msenv.dll!VStudioMain() + 0x78 bytes
devenv.exe!2fcb0637()
devenv.exe!2fcb0fd4()
devenv.exe!2fcb20d8()
devenv.exe!2fcb2148()
devenv.exe!2fcbea7f()
kernel32.dll!BaseThreadInitThunk() + 0x12 bytes
ntdll.dll!RtlInitializeExceptionChain() + 0xef bytes
ntdll.dll!RtlInitializeExceptionChain() + 0xc2 bytes
[Update2]
I think I've found the reason for my problem.
Based on suggestions from SLaks, I reexamined the X.Designer.cs file associated with my UserControl. There were several other controls (checkbox, labels, etc) declared in X.Designer.cs, but that did not actually appear in the UI. I suspect that while I was developing my UserControl using the WinForm editor, I probably went thru several cycles of adding/removing child controls, and at some point some of these child controls were orphaned in the X.Designer.cs file. I went back to a non-localized version of my UserControl (Localizable = False), then deleted all the orphaned child controls, then recompiled, then open the UserControl in the WinForm Designer, then set Localizable back to True, and saved everything. This seems to be working now. I'll update this in the future if this ends up not being the solution.
You have code in an event handler in the control that references the rest of your application.
When the control is used in the designer, this code fails (because the rest of your code isn't running), and throws an exception.
You need to check if (DesignMode)
, and not run any such logic in the designer.
To help find the problem, you can start a second copy of Visual Studio, attach its debugger to the first copy, and set Break On All Exceptions.
One possible cause seems to be putting the Text property for a label within a TableLayoutPanel to be empty. That control can't be selected then as it has zero size in the window. You can find the reason for this and other similar errors by making a text comparison of good and bad versions of *.Designer.vb or .cs files. If the error prevents you from saving the bad file then you can use copy - paste to get a copy to a temporary text file. Compare using Notepad++ or old DOS fc or like.
Edit: One trick seems to be to press Undo a couple of times in the Forms window and then Redo for the same.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With