Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / редактирование свойства в Properties Window (VS.NET 2003) - помогите ламеру / 2 сообщений из 2, страница 1 из 1
04.11.2003, 11:46
    #32314541
Crazy Cat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование свойства в Properties Window (VS.NET 2003) - помогите ламеру
Люди, помогите:
надо сделать Control, который имеет среди прочих Properties трехмерную точку (Int32 - по 10 бит на координату), причем надо, чтобы все три координаты редактировались в Properties Window (аналогично Location, Size - т.е. в дереве). Если я правильно понимаю, надо сделать соответствующий TypeConverter (Point3DTypeConverter) и объявить его

private Int32 coord3D;
[System.ComponentModel.TypeConverter(typeof(Point3DTypeConverter))]
public Int32 Coord3D
{
get {...}
set {...}
}


Может кто кинет примерчик, как надо реализовывать Point3DTypeConverter для аналогичного случая. Надо ли для этого иметь отдельный класс (Point3D) или можно обойтись Int32. Если надо, чего особенного там должно быть?
...
Рейтинг: 0 / 0
05.11.2003, 12:09
    #32315922
swed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование свойства в Properties Window (VS.NET 2003) - помогите ламеру
Надеюсь ничего страшного что пример на VB?
'-------------
Imports System.ComponentModel
Imports System.ComponentModel.Design.Serialization
'-----------
Public Class test
Private _Coord As Coord3D

<CategoryAttribute("My Category"), DefaultValueAttribute(""), _
DescriptionAttribute("coord3D")> _
Public Property Coord() As Coord3D
Get
Return _Coord
End Get
Set(ByVal Value As Coord3D)
_Coord = Value
End Set
End Property
Public Sub New()
_Coord = New Coord3D()
End Sub
End Class
'-------------------------------------
<TypeConverter(GetType(Coord3DConverter))> _
Public Class Coord3D
'''
Private _X As Int32 = 0
Private _Y As Int32 = 0
Private _Z As Int32 = 0
'''
<DescriptionAttribute("X")> _
Public Property X() As Int32
Get
Return _X
End Get
Set(ByVal Value As Int32)
_X = Value
End Set
End Property
'''
<DescriptionAttribute("Y")> _
Public Property Y() As Int32
Get
Return _Y
End Get
Set(ByVal Value As Int32)
_Y = Value
End Set
End Property
'''
<DescriptionAttribute("Z")> _
Public Property Z() As Int32
Get
Return _Z
End Get
Set(ByVal Value As Int32)
_Z = Value
End Set
End Property

End Class
'--------------------------
Friend Class Coord3DConverter : Inherits ExpandableObjectConverter
'''
Public Overloads Overrides Function CanConvertFrom(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal sourceType As System.Type) As Boolean
If (sourceType Is GetType(String)) Then
Return True
End If
Return MyBase.CanConvertFrom(context, sourceType)
End Function

Public Overloads Overrides Function ConvertFrom(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object) As Object
If TypeOf value Is String Then
Try
Dim s As String = CType(value, String)
Dim versionParts() As String
Dim VersionString As String = ""
versionParts = Split(s, ".")
If Not IsNothing(versionParts) Then
Dim _Coord3D As Coord3D = New Coord3D()
If Not IsNothing(versionParts(0)) Then _Coord3D.X = versionParts(0)
If Not IsNothing(versionParts(1)) Then _Coord3D.Y = versionParts(1)
If Not IsNothing(versionParts(2)) Then _Coord3D.Z = versionParts(2)
End If
Catch ex As Exception
Throw New ArgumentException("Can not convert '" + value + "' to type Coord3D")
End Try
End If
Return MyBase.ConvertFrom(context, culture, value)
End Function

Public Overloads Overrides Function ConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object, ByVal destinationType As System.Type) As Object
If (destinationType Is GetType(System.String) AndAlso TypeOf value Is Coord3D) Then
Dim _Coord3D As Coord3D = CType(value, Coord3D)
Return _Coord3D.X.ToString + "." + _Coord3D.Y.ToString + "." + _Coord3D.Z.ToString
End If
Return MyBase.ConvertTo(context, culture, value, destinationType)
End Function

Public Overloads Overrides Function CanConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal destinationType As System.Type) As Boolean
If (destinationType Is GetType(Coord3D)) Then
Return True
End If
Return MyBase.CanConvertFrom(context, destinationType)
End Function
End Class
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / редактирование свойства в Properties Window (VS.NET 2003) - помогите ламеру / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]