PropertyGrid - die kompakte Art Eigenschaften zu ändern, auch im eigenen Programm und während der Laufzeit. Zum besseren Verständnis wird eine "Region" mit Ihren Eigenschaften erzeugt, die auf eine Picturebox gezeichnet wird. Klickt man in diese Region werden die Eigenschaften der Region angezeigt, ansonsten die der Picturebox. Starten Sie ein neues Projekt (Windows-Anwendung) und aktivieren das "PropertyGrid", falls dieses noch nicht in der Toolbox vorhanden ist. Klicken Sie hierzu mit der rechten Maustaste auf die Toolbox und wählen aus dem Kontextmenü den Befehl Elemente hinzufügen/entfernen.... Im darauf erscheinenden Dialog aktivieren Sie aus der Liste der .NET Framework-Komponenten den Eintrag PropertyGrid und klicken dann auf OK. Ziehen Sie auf die Form ein PictureBox-Control (Picture1) mit folgenden Eigenschaften:
Platzieren Sie unterhalb der PictureBox einen CommandButton (Button1) mit der Beschriftung Zeichnen. Ziehen Sie jetzt noch das PropertyGrid-Control auf die Form (am besten rechts von der PictureBox). In den Codeteil der Form schreiben Sie als Erstes: Imports System.ComponentModel Imports System.Drawing.Drawing2D Dann deklarieren Sie die benötigten Variablen: Public Pkt(4) As Point ' 5 Eckpunkte der Region Public myReg As Region ' Region Public myPath As GraphicsPath ' Grafik Pfad Public oMeineRegion As MeineRegion ' Objekt meine Region Public g As System.Drawing.Graphics ' Grafik Im Form_Load Ereignis fügen Sie folgenden Code ein: Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim I As Byte myPath = New GraphicsPath Pkt(4) = New Point Pkt(0).X = 100 Pkt(0).Y = 10 Pkt(1).X = 150 Pkt(1).Y = 20 Pkt(2).X = 100 Pkt(2).Y = 200 Pkt(3).X = 200 Pkt(3).Y = 100 Pkt(4).X = 200 Pkt(4).Y = 10 For I = 0 To 3 myPath.AddLine(Pkt(I), Pkt(I + 1)) ' alle Punkte zu einem Pfad zusammenhängen Next myPath.AddLine(Pkt(I), Pkt(0)) ' letzter und erster Punkt verbinden myReg = New [Region](myPath) ' Region erzeugen oMeineRegion = New MeineRegion ' neues Objekt oMeineRegion.FüllFarbe = Color.Blue ' Standard Werte des Objekt oMeineRegion.RahmenFarbe = Color.Red oMeineRegion.Schrift = Me.Font End Sub Den nachfolgenden Code bitte ebenfalls in den Codeteil der Form einfügen: Private Sub PropertyGrid1_PropertyValueChanged(ByVal s As Object, _ ByVal e As System.Windows.Forms.PropertyValueChangedEventArgs) _ Handles PropertyGrid1.PropertyValueChanged ' wenn in PropertyGrid1 wert geänder dann neuzeichnen Call Button1_Click(Nothing, Nothing) End Sub Private Sub PictureBox1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles PictureBox1.MouseDown ' wurde in Region geklickt? If myReg.IsVisible(e.X, e.Y) Then Beep() ' Region in PropertyGrid1 anzeigen PropertyGrid1.SelectedObject = oMeineRegion Else ' Blatt in PropertyGrid1 anzeigen PropertyGrid1.SelectedObject = PictureBox1 End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim I As Byte Dim g As Graphics g = PictureBox1.CreateGraphics ' Region-Füllung zeichnen g.FillPath(New SolidBrush(oMeineRegion.FüllFarbe), myPath) ' Region-Rahmen zeichnen g.DrawPath(New Pen(oMeineRegion.RahmenFarbe), myPath) If oMeineRegion.NrAnzeigen = True Then ' wenn Nummer anzeigen For I = 0 To 4 g.DrawString(I, oMeineRegion.Schrift, _ New SolidBrush(oMeineRegion.FüllFarbe), _ Pkt(I).X, Pkt(I).Y) Next End If End Sub Nach der Anweisung End Class von Form1 muss folgender Code eingefügt werden: Public Class MeineRegion Private adFüllFarbe As Color Private adRahmenFarbe As Color Private adSchrift As Font Private adNrAnzeigen As Boolean Private adBezeichnung As String <Description("Schriftart zum Nummerieren der Ecken"), Category("Region")> _ Property Schrift() As Font Get Return adSchrift End Get Set(ByVal SetSchrift As Font) adSchrift = SetSchrift End Set End Property <Description("Nummern anzeigen?"), Category("Region")> _ Property NrAnzeigen() As Boolean Get Return adNrAnzeigen End Get Set(ByVal SetNrAnzeigen As Boolean) adNrAnzeigen = SetNrAnzeigen End Set End Property <Description("Farbe zum Füllen der Region"), Category("Region")> _ Property FüllFarbe() As Color Get Return adFüllFarbe End Get Set(ByVal SetFüllFarbe As Color) adFüllFarbe = SetFüllFarbe End Set End Property <Description("Farbe des Rahmen der Region"), Category("Region")> _ Property RahmenFarbe() As Color Get Return adRahmenFarbe End Get Set(ByVal SetRahmenFarbe As Color) adRahmenFarbe = SetRahmenFarbe End Set End Property <Description("Bezeichnung der Region"), Category("Region")> _ Property Bezeichnung() As String Get Return adBezeichnung End Get Set(ByVal SetBezeichnung As String) adBezeichnung = SetBezeichnung End Set End Property End Class Das war's. Starten Sie das Projekt und klicken auf den Button Zeichnen. Klicken Sie anschließend in das gezeichnete Fünfeck. Die Eigenschaften für die Füllfarbe usw. kann jetzt bequem über das "eigene PropertyGrid" geändert werden. Klicken Sie nun auf einen freien Bereich der PictureBox. Et voilà: auch die PictureBox-Eigenschaften können bequem über das PropertyGrid zur Laufzeit geändert werden. Dieser Tipp wurde bereits 25.105 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
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. |