使用WithEvents定义对象实例时其XML注释不显示,该如何解决?
问题原因
VB.NET编译器处理WithEvents关键字修饰的字段时,会在编译阶段自动生成一个同名的隐藏包装属性,用于内部事件绑定逻辑。你手写的XML注释默认附加在原始字段上,而IDE智能提示优先读取自动生成的包装属性的注释,该属性无注释所以会出现不显示的问题。
解决方案
- 方案1:字段属性拆分(无需升级IDE,兼容所有版本)
将WithEvents字段设为私有内部成员,额外定义公共属性对外暴露,把XML注释添加到公共属性上即可正常显示:
''' <summary> ''' 表示一个<see cref="System.Windows.Forms.Button"/>控件,点击后会显示关联的<see cref="System.Windows.Forms.CheckBox"/>控件,用户可通过这些复选框切换元素状态。 ''' </summary> Public Property DropDownButton As System.Windows.Forms.Button Get Return _dropDownButton End Get Set(value As System.Windows.Forms.Button) _dropDownButton = value End Set End Property ' 内部带事件绑定的私有字段,用于编写事件处理逻辑 Private WithEvents _dropDownButton As New System.Windows.Forms.Button
- 方案2:升级IDE(无需修改业务代码)
该问题是Visual Studio旧版本的已知Bug,将Visual Studio升级到2022 17.4及以上版本即可直接修复,原有WithEvents字段的XML注释会正常被智能提示识别。 - 方案3:补充特性兼容提示
如果暂时无法升级IDE也不想调整代码结构,可以额外添加Description特性作为补充,在属性窗口和部分智能提示场景下可展示说明:
''' <summary> ''' 表示一个<see cref="System.Windows.Forms.Button"/>控件,点击后会显示关联的<see cref="System.Windows.Forms.CheckBox"/>控件,用户可通过这些复选框切换元素状态。 ''' </summary> <Description("表示一个Button控件,点击后会显示关联的CheckBox控件,用户可通过这些复选框切换元素状态。")> Public WithEvents DropDownButton As New System.Windows.Forms.Button
内容的提问来源于stack exchange,提问作者John89
相关产品推荐
相关产品推荐

