Projektvorlage erstellen / Form Eigenschaften überschreiben

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    hmm - bei mir gehts nachwievor nicht:

    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. Public Class Form1
    3. <TypeConverter(GetType(MyColorTypeConverter))>
    4. Public Overrides Property BackColor As Color
    5. Get
    6. Return MyBase.BackColor
    7. End Get
    8. Set(value As Color)
    9. MyBase.BackColor = value
    10. End Set
    11. End Property
    12. End Class


    vs2013
    Du hast die "MyColorConverter"_Klasse nur auf das Control angewendet und "noch" nicht auf die Form selbst! Also funktioniert das "nur" für´s Control auf der Form!

    Dafür musst Du noch eine Klasse erstellen mit dem gleichen Inhalt wie bei "MyControl" und diese Klasse statt con "Control" von "Form" erben lassen!

    Dann musst Du im "Designer" noch die "Partial Class.." nicht von Form erben lassen sondern von "MyForm"..dann geht´s! ;)
    @ErfinderDesRades
    Bin jetzt leicht irritiert:
    • Du verwendest das FALSCHE Testprojekt, Benutze bitte "Test TypeConverter02" aus Post#18

      VB.NET-Quellcode

      1. <Category("MyColor")>
      2. <TypeConverter(GetType(MyColorTypeConverter))>
      3. Public Overrides Overloads Property BackColor As Color
      4. Get
      5. Return MyBase.BackColor
      6. End Get
      7. Set(value As Color)
      8. MyBase.BackColor = value
      9. Me.Invalidate()
      10. End Set
      11. End Property
      ist dort die Definition, und die funktioniert FÜR DAS CONTROL.
    • Du verwechselst ganz offensichtlich die BackColor-Property des Testcontrols MyControl mit dem der Form.
    • [b]Der von @Morrison vorgeschlagene Weg ist jedoch gangbar.[/b]
    • [b]Nichtsdestotrotz ist das alles für mich ein "Proof of Concept", In aktiven Projekten acht's nach meiner Auffassung keinen Sinn, Systemstandards umzubiegen. Jedoch bei eigenen Properties können TypeConverter die Lesbarkeit dramatisch erhöhen.[/b]
    es ist das richtige Testprojekt. Ist zwar das ursprüngliche, ich habe aber den Code der korrigiertten MyColorTypeConverter-Klasse aus post#18 da einkopiert.
    Es ist wie Morrison sagt - es fehlte noch ein Zwischenschritt: Man muss ein MyForm-Form erstellen, und da die BackColor-Property überschreiben.
    Und dann, wenn man eigene Forms im Designer erstellt, deren Basisklasse umstellen von Form auf MyForm.
    Sonst schnallt der Designer das nicht.
    Wir zweibeide sind uns einig: in Praxis nicht sinnvoll, solche Verrenkungen auszuführen für einen äusserst fragwürdigen Nutzen (noch dazu im Widerspruch zum Liskovschen Prinzip: "Überrasch mich nicht!")
    Auch einig sind wir, dasses im Gegensatz dazu diese Technik höchst nützlich ist, wenn ein eigener TypeConverter einen eigenen Datentyp Designer-editierbar macht.
    (Und noch viel entscheidender kann das in Wpf werden: Xaml kann sich sehr ungünstig auf den Blutdruck auswirken, wenn man Datentypen formulieren muss, die keinen gscheiten TypeConverter haben.)