none
Aufklappbare Eigenschaften in eigenen Steuerelementen RRS feed

  • Frage

  • Hallo zusammen

    Ich mache ein eigenes Stteuerelement PrintDataGridView welhces von DataGridView erbt. Der Unterschied ist lediglich, dass man meine Version ausdrucken kann und dass sie eine Kopf und  Fusszeile enhält.

    Da man für die Kopf und Fusszeile neben dem Text auch noch die Farben mitgeben kann, habe ich einbe eigene Klasse dafür gemacht. Die Klasse sieht so aus:

    Imports System.Drawing
    Imports System.Windows.Forms

    Public Class KFDefinition

    #Region "Eigenschaften"
      Public Property Text As String
      Public Property Font As Font
      Public Property BackColor As Brush
      Public Property ForeColor As Brush
      Public Property Alignment As DataGridViewContentAlignment
    #End Region

    #Region "Konstruktor"
      Public Sub New()
        _Text = String.Empty
        _Font = New Font("Arial", 11.0!)
        _BackColor = Brushes.White
        _ForeColor = Brushes.Black
        _Alignment = DataGridViewContentAlignment.MiddleLeft
      End Sub

      Public Sub New(text As String)
        Me.New()
        _Text = text
      End Sub

      Public Sub New(text As String, font As Font)
        Me.New(text)
        _Font = font
      End Sub

      Public Sub New(text As String, font As Font, alugnment As DataGridViewContentAlignment)
        Me.New(text, font)
        _Alignment = alugnment
      End Sub
    #End Region

    End Class

    und Die Eigenschften meines Steuerelements so:

    #Region "Eigenschaften"
      Public Property KopfDefinition As KFDefinition

      Public Property FussDefinition As KFDefinition
    #End Region

    #Region "Konstruktor"
      Public Sub New()
        _KopfDefinition = New KFDefinition With {.Font = New Font("Arial", 14.0!, FontStyle.Bold),
                                                 .Alignment = DataGridViewContentAlignment.MiddleCenter,
                                                 .ForeColor = Brushes.Red}
        _FussDefinition = New KFDefinition With {.Font = New Font("Arial", 8.0!, FontStyle.Italic),
                                                 .Alignment = DataGridViewContentAlignment.MiddleLeft,
                                                 .ForeColor = Brushes.Green}
      End Sub
    #End Region

    Zeichne ich nun mein Steuerelement auf eine neue Form werden mir die beiden Eigenschaften angezeigt. Leider aber inaktiv.

    Was ich gerne hätte, ist dass man sie über + öffnen könnte um die Untereigenschaften zu füllen, ähnlich wie die Eigenschaft Size, oder Location oder viele andere auch gemacht ist.

    Hat jemand eine Idee, wie ich das machen kann?? Der Rest würde funktionieren und ich könnte einen Schönheitsfehler ausmerzen.

    Gruss Marcel

    Dienstag, 7. Februar 2012 13:45

Antworten

  • Hallo Marcel,

    damit das funktioniert benötigst Du mindestens einen TypeConverter.
    Will man es ganz komfortabel gestalten käme noch ein ControlDesigner hinzu,
    was ich mir erstmal geschenkt habe.

    Einen Brush kann man nicht im Designer darstellen, da musst Du schon mit einer Color Eigenschaft arbeiten,
    und erst zur Laufzeit einen Brush erzeugen, was ich im Projekt als TextBrush angedeutet habe.

    Ich habe das mal in ein Beispielprojekt verpackt, da es mir fürs Forum zu lang wurde:
    www.elmarboye.de/download/VBPrintGrid.zip

    Ich habe etwas andere Namen verwendet, um es konsistenter mit der übrigen Forms Benamsung zu halten
    (u. a. weil ich existenten Code als Vorlage verwendet habe ;-)

    Gruß Elmar

    Mittwoch, 8. Februar 2012 12:42
    Beantworter

Alle Antworten

  • Hallo Marcel,

    damit das funktioniert benötigst Du mindestens einen TypeConverter.
    Will man es ganz komfortabel gestalten käme noch ein ControlDesigner hinzu,
    was ich mir erstmal geschenkt habe.

    Einen Brush kann man nicht im Designer darstellen, da musst Du schon mit einer Color Eigenschaft arbeiten,
    und erst zur Laufzeit einen Brush erzeugen, was ich im Projekt als TextBrush angedeutet habe.

    Ich habe das mal in ein Beispielprojekt verpackt, da es mir fürs Forum zu lang wurde:
    www.elmarboye.de/download/VBPrintGrid.zip

    Ich habe etwas andere Namen verwendet, um es konsistenter mit der übrigen Forms Benamsung zu halten
    (u. a. weil ich existenten Code als Vorlage verwendet habe ;-)

    Gruß Elmar

    Mittwoch, 8. Februar 2012 12:42
    Beantworter
  • Hallo Elmar

    Ich bin begeistert von Deinem Beispiel. Es funktioniert bei mir. Das mit dem TypeConverter habe ich versucht, bekam aber dann Probleme mit den Brush. Wie man dies macht, kann ich in Deinem Beispiel auch gleich sehen.

    Vielen Dank

    Marcel

    Donnerstag, 9. Februar 2012 07:27