好的,我已经为这个问题奋斗了几天,现在已经无计可施... 我正在尝试通过扩展控件添加一个在运行时在属性网格中可见的可浏览属性。不管我做什么,iExtenderProvider似乎并没有真正运行。
iExtenderProvider位于第二个项目中,并且已将其引用添加到主项目中。(以下是代码)
Imports System.ComponentModel
Imports System.Windows.Forms
Public Class ControlArray
Inherits Component
Implements IExtenderProvider
<Browsable(True)> Public ReadOnly Property Count As Integer
Get
Return 0
End Get
End Property
Public Function CanExtend(ByVal extendee As Object) As Boolean Implements IExtenderProvider.CanExtend
Return TypeOf extendee Is Control
End Function
End Class
我先构建第二个项目,然后回到第一个项目,但我的属性窗口中没有任何内容。我在代码中实例化了一个控件,然后尝试查找我的“Count”属性,但是什么也没有显示。有什么建议可以解决这个问题吗?
IExtenderProvider
的确切方法 - 有一些东西缺失了。而且,IExtenderProvider
在VS IDE中运行良好,但在PropertyGrid中不会,因为它使用反射来获取属性 - 您需要一个TypeConverter。 - Ňɏssa PøngjǣrdenlarpTypeConverter
和一个自定义的PropertyDescriptor
。这些都是很多样板代码,看起来为了一个 RO 属性而付出了很多努力。 - Ňɏssa Pøngjǣrdenlarp