Benutzer mit den meisten Antworten
Aufklappbare Eigenschaften in eigenen Steuerelementen

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.FormsPublic 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 SubPublic Sub New(text As String)
Me.New()
_Text = text
End SubPublic Sub New(text As String, font As Font)
Me.New(text)
_Font = font
End SubPublic Sub New(text As String, font As Font, alugnment As DataGridViewContentAlignment)
Me.New(text, font)
_Alignment = alugnment
End Sub
#End RegionEnd Class
und Die Eigenschften meines Steuerelements so:
#Region "Eigenschaften"
Public Property KopfDefinition As KFDefinitionPublic 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
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.zipIch 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
- Als Antwort markiert Marcel Garaventa Donnerstag, 9. Februar 2012 07:27
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.zipIch 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
- Als Antwort markiert Marcel Garaventa Donnerstag, 9. Februar 2012 07:27
-
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