vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: propertybrowser/eigenes control: problem mit eigenschaften 
Autor: ModeratorDaveS (Moderator)
Datum: 07.11.04 20:48

Also, wenn das Property serialisiert wird (und das ist eine Designer Funktion, hat nichts mit <Serializable> usw zu tun) wird Code generiert in InitializeComponent().
Dein Property wird so initialisiert (mehr oder weniger)
        '
        'MyControl1
        '
        Me.MyControl1.Location = New System.Drawing.Point(72, 80)
        Me.MyControl1.Class1ArrayProperty  = New Class1() {new Class1( _
          ..werte..), new Class1(...werte...), ...}
        'usw
Nun muss der Designer wissen wie dieser Code zu generieren ist:

New Class1() {new Class1(..werte..), new Class1(...werte...), ...}

Und das sagt ihm ein TypeConverter.
Hier ist ein Beispiel von mir. Klasse:
<TypeConverter(GetType(VTPropertyTypeConverter))> _
   Public Structure VTProperty
 
    Private _f1 As Integer
    Private _f2 As Integer
 
    Public Sub New(ByVal f1 As Integer, ByVal f2 As Integer)
        _f1 = f1
        _f2 = f2
    End Sub
 
    <DefaultValue(0)> _
    Public Property f1() As Integer
        Get
            Return _f1
        End Get
        Set(ByVal Value As Integer)
            _f1 = Value
        End Set
    End Property
 
    <DefaultValue(0)> _
    Public Property f2() As Integer
        Get
            Return _f2
        End Get
        Set(ByVal Value As Integer)
            _f2 = Value
        End Set
    End Property
 
    Public Overrides Function ToString() As String
        Return _f1.ToString() + ", " + _f2.ToString()
    End Function
 
    Public Shared Function Parse(ByVal sval As String) As VTProperty
        Dim svals() As String = sval.Split(","c)
        If svals.Length <> 2 Then
            Throw New NotSupportedException("Invalid format")
        End If
        Try
            Dim f1 As Integer = Integer.Parse(svals(0).Trim())
            Dim f2 As Integer = Integer.Parse(svals(1).Trim())
            Return New VTProperty(f1, f2)
        Catch
            Throw New NotSupportedException("Invalid format")
        End Try
    End Function
End Structure
Type Converter:
Public Class VTPropertyTypeConverter
    Inherits ExpandableObjectConverter
 
    Public Sub New()
        MyBase.New()
    End Sub
 
    Public Overloads Overrides Function CanConvertFrom(ByVal context As _
      ITypeDescriptorContext, ByVal sourceType As Type) As Boolean
        If sourceType Is GetType(String) Then Return True
        Return MyBase.CanConvertFrom(context, sourceType)
    End Function
 
    Public Overloads Overrides Function ConvertFrom(ByVal context As _
      ITypeDescriptorContext, ByVal culture As _
      System.Globalization.CultureInfo, ByVal value As Object) As Object
        If value Is Nothing Then Return Nothing
        Dim sval As String = value
        If sval Is Nothing Then Throw New NotSupportedException("Unsuported" & _
          "type")
        Return VTProperty.Parse(sval)
    End Function
 
    Public Overloads Overrides Function CanConvertTo(ByVal context As _
      ITypeDescriptorContext, ByVal destinationType As Type) As Boolean
        If destinationType Is GetType(InstanceDescriptor) Then Return True
        Return MyBase.CanConvertTo(context, destinationType)
    End Function
 
    Public Overloads Overrides Function ConvertTo( _
    ByVal context As ITypeDescriptorContext, _
    ByVal culture As System.Globalization.CultureInfo, _
    ByVal value As Object, _
    ByVal destinationType As Type) As Object
        If destinationType Is GetType(InstanceDescriptor) AndAlso value.GetType( _
          ) Is GetType(VTProperty) Then
            Dim vtp As VTProperty = value
            Dim ctor As ConstructorInfo = GetType(VTProperty).GetConstructor(  _
              New Type() {GetType(Integer), GetType(Integer)})
            If Not ctor Is Nothing Then
                Return New InstanceDescriptor(ctor,  New Object() {vtp.f1, _
                  vtp.f2})
            End If
        End If
        Return MyBase.ConvertTo(context, culture, value, destinationType)
    End Function
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
propertybrowser/eigenes control: problem mit eigenschaften1.855Hubertus05.11.04 18:14
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.405WaldiMaywood05.11.04 19:31
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.347Hubertus05.11.04 20:29
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.294WaldiMaywood05.11.04 20:33
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.284Hubertus05.11.04 20:31
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.343WaldiMaywood05.11.04 20:58
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.349Hubertus05.11.04 21:04
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.346Hubertus05.11.04 21:36
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.310WaldiMaywood05.11.04 21:56
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.359Hubertus06.11.04 11:44
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.316WaldiMaywood06.11.04 16:32
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.313Hubertus06.11.04 17:45
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.402WaldiMaywood07.11.04 14:47
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.436Hubertus07.11.04 15:09
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.322WaldiMaywood07.11.04 15:24
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.345Hubertus07.11.04 15:24
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.293WaldiMaywood07.11.04 15:40
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.312Hubertus07.11.04 15:57
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.335ModeratorDaveS07.11.04 20:07
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.337Hubertus07.11.04 20:33
Re: propertybrowser/eigenes control: problem mit eigenschaft...1.901ModeratorDaveS07.11.04 20:48
Übrigens...1.342ModeratorDaveS07.11.04 21:05
Re: Übrigens...1.363WaldiMaywood07.11.04 21:13
Re: Übrigens...1.336ModeratorDaveS07.11.04 22:33
Re: Übrigens...1.359WaldiMaywood07.11.04 23:29
Re: Übrigens...1.347Hubertus08.11.04 06:29
Re: Übrigens...1.361ModeratorDaveS08.11.04 09:40
Re: Übrigens...1.343WaldiMaywood08.11.04 10:20
Re: Übrigens...1.316Hubertus08.11.04 17:51
Re: Übrigens...1.298ModeratorDaveS08.11.04 18:35
Re: Übrigens...1.279Hubertus08.11.04 18:41
Re: Übrigens...1.288ModeratorDaveS08.11.04 19:04
Re: Übrigens...1.274Hubertus08.11.04 19:46
Re: Übrigens...1.268ModeratorDaveS08.11.04 20:12
Re: Übrigens...1.264Hubertus10.11.04 06:59
Re: Übrigens... Teil I1.406ModeratorDaveS10.11.04 08:25
Re: Übrigens... Teil I1.334Hubertus10.11.04 12:23
Re: Übrigens...Teil II1.268ModeratorDaveS10.11.04 08:25

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel