class Eigenschaft übergeben

DerStauner

Erfahrenes Mitglied
Hallo,

ich habe folgende Klasse: es beinhaltet ein Panel und darin ein Label. Im Wesentlichen ist nichts aussergewöhnliches daran, ich zeichne nur zwei Lines oben und unten auf den Panel und füge ein Label hinzu.

Was ich aber nicht hinbekommen kann: ich möchte eine Eigenschaft (sagen wir mal labelcaption) der Klasse hinfügen. Die Eigenschaft sollt im properties window auch erscheinen. Und wenn ich irgendein Text in dieses Feld eingebe, dann soll das Text auf dem Panel erscheinen.

Ich kann der Klasse eine Eigenschaft hinzufügen (es erscheint auch im properties window - <browsable> attribute), aber wie kann ich es erreichen, dass diese Eigenschaft mit dem Panel "kommuniziert"?

Könnt ihr meine Klasse so ergänzen? (die colors sind unwichtig)

Code:
Imports System.ComponentModel
Public Class mypanel
    Inherits Windows.Forms.Panel
    Private panelcaption As String
    Public Sub New()
        MyBase.New()
        Me.BackColor = Color.White
        Me.Dock = DockStyle.Top
        Dim lbl As New Label
        lbl.Font = New Font("arial", 14, FontStyle.Bold)
        lbl.ForeColor = Drawing.ColorTranslator.FromOle(form_label_fc)
        lbl.Top = 7
        lbl.Left = 8
        lbl.Text = "some text" 'hier sollte immer der jeweilige Wert von labelcaption stehen
        lbl.AutoSize = True
        Me.Controls.Add(lbl)
        lbl.Visible = True
    End Sub
    <Browsable(True)> _
    Public Property labelcaption()
        Get
            Return panelcaption
        End Get
        Set(ByVal value)
            panelcaption = value
        End Set
    End Property
    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        Dim g As Graphics = e.Graphics
        Dim p2 As New Pen(Drawing.ColorTranslator.FromOle(panel_line_below), 2)
        Dim rect As Rectangle = New Rectangle(0, 0, Me.Width, 2)
        Dim lbs As New Drawing2D.LinearGradientBrush(rect, Drawing.ColorTranslator.FromOle(panel_line_gradient_begin), _
                                                     Drawing.ColorTranslator.FromOle(panel_line_gradient_end), _
                                                     Drawing2D.LinearGradientMode.Vertical)
        g.FillRectangle(lbs, rect)
        g.DrawLine(p2, 0, Me.Height, Me.Width, Me.Height)
        MyBase.OnPaint(e)
    End Sub
End Class
 

Nico Graichen

Erfahrenes Mitglied
Hi

Einfach die Daten durchreichen
Code:
    <Browsable(True)> _
    Public Property labelcaption()
        Get
            Return mylabel.Text
        End Get
        Set(ByVal value)
            mylabel.Text = value
        End Set
    End Property