我在VB.NET中有Windows Forms App,它运行良好,我没有设计者就手动添加了一些代码事件,如下所示:


私有子bindingNavigatorAddNewItem_Click(发送者为System.Object,
作为System.EventArgs)处理BindingNavigatorAddNewItem.Click

namesBindingSource.AddNew()

结束子


还有一个Form1.Designer.vb,InitializeComponent方法此代码


AddHandler Me.BindingNavigatorAddNewItem.Click,AddressOf
Me.bindingNavigatorAddNewItem_Click


现在,即使表单运行正常,并且事件已正确执行;表单在设计时失败,并显示以下错误:


值不能为空。参数名称:objectType


System.ComponentModel.TypeDescriptor.TypeDescriptionNode.GetRuntimeType(Type
objectType)
System.ComponentModel.TypeDescriptionProvider.GetRuntimeType(Type
ReflectionType)在
Microsoft.VisualStudio.Design.MultiTargetingContextProvider.GetRuntimeType(Type
objectType)
Microsoft.VisualStudio.Design.Serialization.CodeDom.HandlesClauseManager.GetFieldType(String
fieldName,输入documentBaseType),位于
Microsoft.VisualStudio.Design.Serialization.CodeDom.HandlesClauseManager.GetReferencedComponentType(String
componentName,CodeTypeDeclaration codeTypeDecl,
ITypeResolutionService加载程序,IDictionary&缓存)位于
Microsoft.VisualStudio.Design.Serialization.CodeDom.HandlesClauseManager.ParseHandlesClauses(CodeTypeDeclaration
codeTypeDecl,布尔值updateCache)位于
Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.OnMethodPopulateStatements(对象
发送者,EventArgs e)位于
System.CodeDom.CodeMemberMethod.get_Statements()在
System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager
经理,CodeTypeDeclaration声明)
System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
经理)
Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
serializationManager)在
System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost
主办)


现在,我注意到如果由设计人员而不是手动绑定事件,则不会发生。

但是我仍然需要手动执行此操作,因为它最终将由某些DTE自动化代码生成。

另外,如果出现错误后,我按下链接“忽略并继续”,则它在设计时可以很好地显示表单,但是为什么它首先失败了?

最佳答案

解决方法如下:


进入表单代码
删除公共类(您的表单名称)和结束类之间的所有内容。


打开表单设计器。它正常打开了吗?

如果是,则您的方向正确。

放回代码;逐步删除代码,直到打开表单。您删除的最后一个代码就是问题所在。

当事件处理程序包含对不存在对象的引用时,就会发生这种情况。例如,如果将一个按钮放在表单上,​​请创建Click事件处理程序,然后从表单中删除此按钮。

关于vb.net - 错误“值不能为空。在设计器中打开VB.NET Windows窗体时,“参数名称:objectType”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23818003/

10-12 03:13