Online-Status als Circle

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von FreShmaKer.

    Nur funktioniert es mit der bloßen CheckBox (If...Then....Else -Abfrage) nicht. Wenn ich die CheckBox betätige, passiert nicht´s. Den gesamten Code habe ich im .Paint-Event stehen.

    Woran kann es liegen?


    Ich habe es auch mal mit einem CheckBox-Paint-Event probiert:

    VB.NET-Quellcode

    1. Private Sub CheckBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles CheckBox1.Paint
    2. If CheckBox1.Checked Then
    3. Dim circle As Graphics = e.Graphics
    4. circle.FillEllipse(Brushes.Blue, 10, 239, 10, 10)
    5. End If
    6. End Sub
    Ruf mal in dem CheckedChanged Event der Chekbox

    VB.NET-Quellcode

    1. Me.Invalidate
    auf. Erst dann wird die Form neu gezeichnet.

    VB.NET-Quellcode

    1. Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    2. If CheckBox1.Checked Then
    3. Dim circle As Graphics = e.Graphics
    4. circle.FillEllipse(Brushes.Blue, 10, 239, 10, 10)
    5. Me.Invalidate()
    6. End If
    7. End Sub




    Er nimmt mir im CheckedChanged-Event ff. nicht ab:
    Dim circle As Graphics = e.Graphics
    Im CheckBox1.CheckedChanged wird invalidisiert, im Form_Paint wird gemalt:

    VB.NET-Quellcode

    1. Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
    2. Me.Invalidate()
    3. End Sub
    4. Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    5. If CheckBox1.Checked Then
    6. Dim circle As Graphics = e.Graphics
    7. circle.FillEllipse(Brushes.Blue, 10, 239, 10, 10)
    8. End If
    9. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Denke daran, das Graphics-Objekt wieder zu disposen oder es gar nicht erst zu erstellen. Also so:

    VB.NET-Quellcode

    1. Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
    2. Me.Invalidate()
    3. End Sub
    4. Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    5. If CheckBox1.Checked Then
    6. Dim circle As Graphics = e.Graphics
    7. circle.FillEllipse(Brushes.Blue, 10, 239, 10, 10)
    8. circle.Dispose()
    9. End If
    10. End Sub


    Oder viel besser:

    VB.NET-Quellcode

    1. Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
    2. Me.Invalidate()
    3. End Sub
    4. Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    5. If CheckBox1.Checked Then
    6. e.Graphics.FillEllipse(Brushes.Blue, 10, 239, 10, 10)
    7. End If
    8. End Sub

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    vb-checker schrieb:

    Denke daran, das Graphics-Objekt wieder zu disposen oder es gar nicht erst zu erstellen.
    :?: :?: :?:
    Hier wird nix erstellt. Siehst Du da ein New?
    Kannst Du auch Code posten, ohne ihn abzuschreiben?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!