- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Windows 应用程序项目中有一个 UserControl 类。它的一个属性是我定义的另一个类的集合。我似乎找不到一个很好的例子来说明如何在设计时让标准集合编辑器为它工作。
我在一定程度上使用我发现的一些示例代码让它工作,但我的集合中的数据没有得到保存。当我退出表单并在设计时重新打开它时,数据不再存在。
这是我的类(class):
Public Class Gauge
Inherits Control
Private WithEvents _Captions As New CaptionCollection
<Category("Gauge"), _
TypeConverter(GetType(CaptionCollectionConverter)), _
Description("Custom text displayed on the gauge.")> _
Public Property Captions() As CaptionCollection
Get
Return _Captions
End Get
Set(ByVal value As CaptionCollection)
_Captions = value
End Set
End Property
<Category("Gauge"), _
TypeConverter(GetType(CaptionConverter)), _
Description("Custom text displayed on the gauge.")> _
Public Class Caption
Private _Text As String = ""
Private _Color As Color = Color.Black
Private _TextIsValue As Boolean
Private _Position As New Point(0, 0)
Public Property Text() As String
Get
Return _Text
End Get
Set(ByVal value As String)
If _Text <> value Then
_Text = value
End If
End Set
End Property
Public Property Color() As Color
Get
Return _Color
End Get
Set(ByVal value As Color)
If _Color <> value Then
_Color = value
End If
End Set
End Property
Public Property TextIsValue() As Boolean
Get
Return _TextIsValue
End Get
Set(ByVal value As Boolean)
If _TextIsValue <> value Then
_TextIsValue = value
End If
End Set
End Property
Public Property Position() As Point
Get
Return _Position
End Get
Set(ByVal value As Point)
If _Position <> value Then
_Position = value
End If
End Set
End Property
End Class
Public Class CaptionCollection
Inherits CollectionBase
Implements ICustomTypeDescriptor
Public Sub Add(ByVal c As Caption)
Me.List.Add(c)
End Sub
Public Sub Remove(ByVal c As Caption)
Me.List.Remove(c)
End Sub
Default Public ReadOnly Property Item(ByVal index As Integer) As Caption
Get
Return DirectCast(Me.List(index), Caption)
End Get
End Property
' Implementation of interface ICustomTypeDescriptor
Public Function GetClassName() As String Implements System.ComponentModel.ICustomTypeDescriptor.GetClassName
Return TypeDescriptor.GetClassName(Me, True)
End Function
Public Function GetAttributes() As AttributeCollection Implements System.ComponentModel.ICustomTypeDescriptor.GetAttributes
Return TypeDescriptor.GetAttributes(Me, True)
End Function
Public Function GetComponentName() As String Implements System.ComponentModel.ICustomTypeDescriptor.GetComponentName
Return TypeDescriptor.GetComponentName(Me, True)
End Function
Public Function GetConverter() As TypeConverter Implements System.ComponentModel.ICustomTypeDescriptor.GetConverter
Return TypeDescriptor.GetConverter(Me, True)
End Function
Public Function GetDefaultEvent() As EventDescriptor Implements System.ComponentModel.ICustomTypeDescriptor.GetDefaultEvent
Return TypeDescriptor.GetDefaultEvent(Me, True)
End Function
Public Function GetDefaultProperty() As PropertyDescriptor Implements System.ComponentModel.ICustomTypeDescriptor.GetDefaultProperty
Return TypeDescriptor.GetDefaultProperty(Me, True)
End Function
Public Function GetEditor(ByVal editorBaseType As Type) As Object Implements System.ComponentModel.ICustomTypeDescriptor.GetEditor
Return TypeDescriptor.GetEditor(Me, editorBaseType, True)
End Function
Public Function GetEvents(ByVal attributes As Attribute()) As EventDescriptorCollection Implements System.ComponentModel.ICustomTypeDescriptor.GetEvents
Return TypeDescriptor.GetEvents(Me, attributes, True)
End Function
Public Function GetEvents() As EventDescriptorCollection Implements System.ComponentModel.ICustomTypeDescriptor.GetEvents
Return TypeDescriptor.GetEvents(Me, True)
End Function
Public Function GetPropertyOwner(ByVal pd As PropertyDescriptor) As Object Implements System.ComponentModel.ICustomTypeDescriptor.GetPropertyOwner
Return Me
End Function
Public Function GetProperties(ByVal attributes As Attribute()) As PropertyDescriptorCollection Implements System.ComponentModel.ICustomTypeDescriptor.GetProperties
Return GetProperties()
End Function
Public Function GetProperties() As PropertyDescriptorCollection Implements System.ComponentModel.ICustomTypeDescriptor.GetProperties
' Create a collection object to hold property descriptors
Dim pds As New PropertyDescriptorCollection(Nothing)
' Iterate the list of employees
For i As Integer = 0 To Me.List.Count - 1
' Create a property descriptor for the caption item and add to the property descriptor collection
Dim pd As New CaptionCollectionPropertyDescriptor(Me, i)
pds.Add(pd)
Next
' return the property descriptor collection
Return pds
End Function
End Class
' This is a special type converter which will be associated with the Caption class.
' It converts a Caption object to string representation for use in a property grid.
Friend Class CaptionConverter
Inherits ExpandableObjectConverter
Public Overloads Overrides Function ConvertTo(ByVal context As ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object, ByVal destType As Type) As Object
'Return "(Collection)"
If destType Is GetType(String) AndAlso TypeOf value Is Caption Then
' Cast the value to an Caption type
Dim emp As Caption = DirectCast(value, Caption)
' Return the text for display.
Return emp.Text
End If
Return MyBase.ConvertTo(context, culture, value, destType)
End Function
End Class
' This is a special type converter which will be associated with the CaptionCollection class.
' It converts a CaptionCollection object to a string representation for use in a property grid.
Friend Class CaptionCollectionConverter
Inherits ExpandableObjectConverter
Public Overloads Overrides Function ConvertTo(ByVal context As ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object, ByVal destType As Type) As Object
If destType Is GetType(String) AndAlso TypeOf value Is CaptionCollection Then
' Return department and department role separated by comma.
Return "(Collection)"
End If
Return MyBase.ConvertTo(context, culture, value, destType)
End Function
End Class
Public Class CaptionCollectionPropertyDescriptor
Inherits PropertyDescriptor
Private collection As CaptionCollection = Nothing
Private index As Integer = -1
Public Sub New(ByVal coll As CaptionCollection, ByVal idx As Integer)
MyBase.New("#" & idx.ToString(), Nothing)
Me.collection = coll
Me.index = idx
End Sub
Public Overloads Overrides ReadOnly Property Attributes() As AttributeCollection
Get
Return New AttributeCollection(Nothing)
End Get
End Property
Public Overloads Overrides Function CanResetValue(ByVal component As Object) As Boolean
Return True
End Function
Public Overloads Overrides ReadOnly Property ComponentType() As Type
Get
Return Me.collection.[GetType]()
End Get
End Property
Public Overloads Overrides ReadOnly Property DisplayName() As String
Get
Return "Caption" + (index + 1).ToString()
End Get
End Property
Public Overloads Overrides ReadOnly Property Description() As String
Get
Return "Caption" + (index + 1).ToString()
End Get
End Property
Public Overloads Overrides Function GetValue(ByVal component As Object) As Object
Return Me.collection(index)
End Function
Public Overloads Overrides ReadOnly Property IsReadOnly() As Boolean
Get
Return False
End Get
End Property
Public Overloads Overrides ReadOnly Property Name() As String
Get
Return "#" & index.ToString()
End Get
End Property
Public Overloads Overrides ReadOnly Property PropertyType() As Type
Get
Return Me.collection(index).[GetType]()
End Get
End Property
Public Overloads Overrides Sub ResetValue(ByVal component As Object)
End Sub
Public Overloads Overrides Function ShouldSerializeValue(ByVal component As Object) As Boolean
Return True
End Function
Public Overloads Overrides Sub SetValue(ByVal component As Object, ByVal value As Object)
' this.collection[index] = value;
End Sub
End Class
下课
最佳答案
我找到了答案。我缺少的是 Captions 属性中的这个属性:DesignerSerializationVisibility(DesignerSerializationVisibility.Content
关于c# - 设计时用户控件中的集合编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964912/
编辑:我似乎问错了这个问题。 我正在尝试寻找一种方法来查询一个集合是否在另一个集合中可用。例如: SELECT * FROM something WHERE (1, 3) IN (1, 2, 3, 4
这两种方法似乎 produce the same results ,但我一直很难真正说服人们第二种方法有效,因为它显然并不为人所知。 // Create some data var foo = { '
我一直在学习Kotlin,并且遇到过Collections API。在Kotlin之前,我一直在学习Java,并且我知道Java中有很多不同类型的Collections API。例如,我们使用List
为什么我会得到不同的行为: Collection col2 = new ArrayList(col); 集合 col2 = new ArrayList(); col2.addAll(col) 我正在与
所以我有一个代表专辑信息的 JSON 对象。给定“function updateRecords(id, prop, value)”我希望能够更新每个条目。正确的完成代码如下。 我得到了指示,粗体部分,
我想存储一个对象集合,这些对象根据它们所代表的值进行键控。这些键可以重复。例如: [4] => Bob [5] => Mary [5] => Sue [9] => Steve [10] =>
在检查 ArrayList API 时,我注意到一些看起来很奇怪的东西。 确实,这里是 ArrayList 构造函数实现,其中 Collection 作为参数传递: public ArrayList(
我正在为 API 编写一个 swagger 定义文件。 API 是用于 GET 请求的 /path/to/my/api: get: summary: My Custom API d
我知道scala.collection包中有两个非常有用的对象,可以帮助我们实现这个目标: JavaConverters(如果我想明确说明并准确说明我要转换的内容) JavaConversions(如
我已经阅读了无数其他帖子,但似乎无法弄清楚发生了什么,所以是时候寻求帮助了。 我正在尝试将包含集合的域实体映射到也包含集合的 dtos。 这是一个原始示例; (我提前为代码墙道歉,我尽量保持简短):
我正在创建一个具有 ArrayList 的类,因此当我调用构造函数时,它会初始化该数组: public class ElementsList { private ArrayList list;
我正在阅读事件指南和指南的开头,它说: You can also add an event listener to any element in the this.$ collection using
我是 Python 新手,想知道如何使用键在字典中存储不同数据类型的列表 例如 - {[Key1,int1,int1,String1] , [Key2,int2,int2,String2], [Key
int[] mylist = { 2, 4, 5 }; IEnumerable list1 = mylist; list1.ToList().Add(1); // why 1 does not get
我在 UI 表单中的每一行之后将以下内容添加到 HashMap 集合中 声明 Map> map = new HashMap>(); List valSetOne = new ArrayList();
我正在开发我的第一个 Java 项目,我有一个问题。问题应该很简单(虽然代码不是那么短,但没有理由被吓倒:))。我创建了一个基本的角色扮演游戏,并且有一个定义每个角色的抽象类“Character”。在
我正在开发一款应用程序,可以为用户收集推文、Facebook 状态和 Facebook 照片。目前,用户确切地设定了他们希望这种收获发生的时间和时间,并且蜘蛛会在此期间拉取数据。 when 和 to
有谁知道在 C# 中是否有与 Java 的 Set 集合等效的好方法?我知道您可以通过填充但忽略值来使用 Dictionary 或 HashTable 在某种程度上模仿集合,但这不是一种非常优雅的方式
EXISTS 该函数返回 集合中第一个元素的索引,如果集合为空,返回NULLNULLNULL Collecti
RDF集合是通过属性 rdf:parseType="Collection" 来描述仅包含指定成员的组 rdf:parseType="Collection" 属
我是一名优秀的程序员,十分优秀!