vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls   |   VB-Versionen: VB.NET02.01.04
PropertyGrid - Eigenschaften (VB.NET)

Eigenschaften von Objekten mit einem PropertyGrid ändern

Autor:   Alex Furrer (afu)Bewertung:     [ Jetzt bewerten ]Views:  25.089 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

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:

  • Size: 400;300
  • Borderstyle: Fixed3D

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.089 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht 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