Property zu einem Control hinzufügen

  • Allgemein

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Leonalter.

    Property zu einem Control hinzufügen

    Hallo,

    ich habe mir grade einen Button gebastelt, nun möchte ich aber eine Property hinzufügen, wenn diese auf true gesetzt wird, soll das Panel sich nach Angaben zeichenn und verhalten.

    Doch leider hab ich nicht so den Plan davon.Mein bisheriger Code:

    VB.NET-Quellcode

    1. Private auswahl_string As String = ""
    2. Public Property Auswahl() As String Get
    3. Return auswahl_string
    4. End Get
    5. Set(ByVal value As String)
    6. auswahl_string = value
    7. End Set
    8. End Property



    Wie sag ich jetzt dem Programm, was es machen soll, wenn sich diese Property ändert?!?!
    Du kannst den "Getter" und "Setter", wie eine normale Funktion, bzw. Sub verwenden.

    VB.NET-Quellcode

    1. Public Property Auswahl() As String Get
    2. Return auswahl_string
    3. End Get
    4. Set(ByVal value As String)
    5. if value Then
    6. 'Hier Dein Code, wenn True
    7. End If
    8. auswahl_string = value
    9. End Set
    10. End Property
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Kann mir jetzt ehrlich gesagt nicht ganz vorstellen, was Du machst. Zeig mal mehr Code, das macht es einfacher, eine passende Antwort zu finden.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    VB.NET-Quellcode

    1. Inherits Windows.Forms.Button
    2. Public Sub New()
    3. Me.Size = New System.Drawing.Point(100, 41)
    4. Me.FlatStyle = Windows.Forms.FlatStyle.Flat
    5. Me.FlatAppearance.BorderSize = 0
    6. Me.FlatAppearance.BorderColor = System.Drawing.Color.Gray
    7. Me.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent
    8. Me.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent
    9. Me.BackColor = System.Drawing.Color.Transparent
    10. Me.BackgroundImage = My.Resources.normal
    11. Me.BackgroundImageLayout = Windows.Forms.ImageLayout.Stretch
    12. Me.Font = New System.Drawing.Font("Microsoft YaHei UI", 14.25, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    13. Me.ForeColor = Drawing.Color.White
    14. Me.Cursor = Windows.Forms.Cursors.Hand
    15. End Sub
    16. Private Sub Reefcitycraft_Barbutton_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
    17. Me.BackgroundImage = My.Resources.hover
    18. Me.ForeColor = Drawing.Color.Black
    19. End Sub
    20. Private Sub Reefcitycraft_Barbutton_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseEnter
    21. Me.BackgroundImage = My.Resources.hover
    22. Me.ForeColor = Drawing.Color.Black
    23. End Sub
    24. Private Sub Reefcitycraft_Barbutton_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeave
    25. Me.BackgroundImage = My.Resources.normal
    26. Me.ForeColor = Drawing.Color.White
    27. End Sub
    28. Private Sub Reefcitycraft_Barbutton_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
    29. Me.BackgroundImage = My.Resources.hover
    30. Me.ForeColor = Drawing.Color.Black
    31. End Sub
    Die Property Auswahl sollte ein Boolean sein, hab ich vorhin nicht gesehen.

    VB.NET-Quellcode

    1. Private _auswahl As Boolean
    2. Public Property auswahl As Boolean
    3. Get
    4. Return _auswahl
    5. End Get
    6. Set(value As Boolean)
    7. _auswahl = value
    8. End Set
    9. End Property


    Und, wenn ich Dich richtig verstehe, musst Du die Property einfach abfragen. So z.B.,

    VB.NET-Quellcode

    1. Private Sub Reefcitycraft_Barbutton_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
    2. If Me.auswahl Then
    3. Me.BackgroundImage = My.Resources.hover
    4. Me.ForeColor = Drawing.Color.Black
    5. End If
    6. End Sub
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Vielen Dank, nun funktioniert das genau wie ichs haben wollte :)

    //EDIT: leider zu früh gefreut!!!!
    Ich benutze die Button quasi als Tabcontrol. Bsp:

    VB.NET-Quellcode

    1. Reefcitycraft_Barbutton1.auswahl = False
    2. Reefcitycraft_Barbutton2.auswahl = True
    3. Reefcitycraft_Barbutton3.auswahl = False
    4. Reefcitycraft_Barbutton4.auswahl = False
    5. Reefcitycraft_Barbutton5.auswahl = False
    6. Reefcitycraft_Barbutton6.auswahl = False
    7. Reefcitycraft_Barbutton7.auswahl = False
    8. Reefcitycraft_Barbutton8.auswahl = False
    9. TabControl1.SelectedTab = News



    Allerdings werden dann alle Button, als wären sie auf tru, erst wenn man darüberfährt, werden sie wieder wie false!
    Hast du da ne Idee, wie man das beheben könnte?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Leonalter“ ()

    Lad mir mal Dein Projekt hoch bitte. Ich kann mir bei Dir iwi nix vorstellen, sonst muss ich die ganze Zeit nur raten, was ich Dir raten soll..
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    VB.NET-Quellcode

    1. Public Class Reefcitycraft_Barbutton
    2. Inherits Windows.Forms.Button
    3. Private _auswahl As Boolean
    4. Public Property auswahl As Boolean
    5. Get
    6. Return _auswahl
    7. End Get
    8. Set(ByVal value As Boolean)
    9. _auswahl = value
    10. Me.BackgroundImage = My.Resources.hover
    11. Me.ForeColor = Drawing.Color.Black
    12. End Set
    13. End Property
    14. Public Sub New()
    15. Me.Size = New System.Drawing.Point(100, 41)
    16. Me.FlatStyle = Windows.Forms.FlatStyle.Flat
    17. Me.FlatAppearance.BorderSize = 0
    18. Me.FlatAppearance.BorderColor = System.Drawing.Color.Gray
    19. Me.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent
    20. Me.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent
    21. Me.BackColor = System.Drawing.Color.Transparent
    22. Me.BackgroundImage = My.Resources.normal
    23. Me.BackgroundImageLayout = Windows.Forms.ImageLayout.Stretch
    24. Me.Font = New System.Drawing.Font("Microsoft YaHei UI", 14.25, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    25. Me.ForeColor = Drawing.Color.White
    26. Me.Cursor = Windows.Forms.Cursors.Hand
    27. End Sub
    28. Private Sub Reefcitycraft_Barbutton_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
    29. If Me.auswahl Then
    30. Else
    31. Me.BackgroundImage = My.Resources.hover
    32. Me.ForeColor = Drawing.Color.Black
    33. End If
    34. End Sub
    35. Private Sub Reefcitycraft_Barbutton_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseEnter
    36. If Me.auswahl Then
    37. Else
    38. Me.BackgroundImage = My.Resources.hover
    39. Me.ForeColor = Drawing.Color.Black
    40. End If
    41. End Sub
    42. Private Sub Reefcitycraft_Barbutton_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeave
    43. If Me.auswahl Then
    44. Else
    45. Me.BackgroundImage = My.Resources.normal
    46. Me.ForeColor = Drawing.Color.White
    47. End If
    48. End Sub
    49. Private Sub Reefcitycraft_Barbutton_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
    50. If Me.auswahl Then
    51. Else
    52. Me.BackgroundImage = My.Resources.hover
    53. Me.ForeColor = Drawing.Color.Black
    54. End If
    55. End Sub
    56. End Class
    Was genau soll denn passieren, wenn die Property auf True oder False gesetzt wird?
    In deinem Code setzt du, unabhängig davon, ob die Property auf True oder False gesetzt wird das BackgroundImage und die ForeColor auf den selben wert.
    Ggf. solltest du im Setter noch unterscheiden, ob dieser eben auf True oder auf False gesetzt wird, und abhängig davon etwas anderes setzen.
    Das ist meine Signatur und sie wird wunderbar sein!
    Ja im Moment schaltet er richtig um wenn ich die Property änder, allerdings wenn über den Code das geändert wird, muss man zuerst mit der Maus darüber fahren, dass sich es neu zeichnet. Wo muss ich also dem Control sagen dass es sich neu zeichnen soll?