winform 位置不空 隐藏控件_winforms – 为什么WinForm Designer显示消息“值不能为空.参数名称:上下文“?...

我有一个c#

Windows窗体应用程序,使用.NET 3.5.

我的机器环境如下:

> Visual Studio 2010 Premium,SP1

> Windows 7 Professional,SP1

> 32位处理器

我有一个UserControl导出的自定义控件,其中包含一些其他UserControls.

我在Visual Studio的Windows窗体设计器中调出主要的UserControl,然后我开始点击各种嵌入式的UserControls,并随机更改一些属性,如文本.然后单击保存工具栏按钮.然后我继续对控件的属性进行更多更改,然后单击保存.

在一段时间之后(这不可预测),Visual Studio将显示一个错误对话框.

WinForms设计器显示一个带有“Microsoft Visual Studio”标题的模态对话框,并显示了一个两行消息:“值不能为空”参数名称:上下文“和”确定“按钮.

不幸的是,通过单击确定按钮关闭此对话框后,Visual Studio现在已经损坏了我的Form的设计者生成的代码.恢复代码的唯一方法是备份文件.

我发现唯一的解决方法是将属性窗口中的UserControl设置为false.这不是长期的解决方法,因为我需要这个UserControl可以在我们的生产代码中进行本地化.

我的项目相当简单,没有Web服务等

我尝试使用Visual Studio的另一个实例调试,看看是否可以捕获任何异常,但不会生成异常.没有任何重要的调试输出.

有没有人看到这个问题?寻找建议

更多信息…

我能够成功附加Visual Studio的第二个实例,并确定正在抛出异常. (我不得不取消选中“我的代码”调试选项,启用符号服务器等).

显然,当我单击WinForm设计器中的保存时,System.ArgumentNullException异常发生在System.dll中,方法System.ComponentModel.Design.Serialization.ContextStack.Push(对象上下文)中.所以,context参数是null,这是问题.仍然不知道为什么会发生这种情况.

这是堆栈跟踪:

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]

我想我已经找到了我的问题的原因.

根据SLaks的建议,我重新检查了与我的UserControl相关联的X.Designer.cs文件.在X.Designer.cs中声明的还有其他几个控件(复选框,标签等),但实际上并没有出现在UI中.我怀疑当我使用WinForm编辑器开发我的UserControl时,我可能经历了几个添加/删除子控件的周期,在某些时候,一些这些子控件在X.Designer.cs文件中是孤立的.我回到我的UserControl(Localizable = False)的非本地化版本,然后删除所有孤立的子控件,然后重新编译,然后在WinForm Designer中打开UserControl,然后将Localizable设置为True,并保存所有内容.这似乎现在正在工作.如果这不是解决办法,我将来会更新这个.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值