Toggle Switch-Steuerelement in Windows Forms

Entwerfe ich einen Toggle-Switch-Steuerung mit CheckBox, aber derzeit meiner Kontrolle nur zeichnet einen Kreis. Wie kann ich Runde Formen, wie unten Bild und wie kann ich die Position des Kreises, basierend auf dem Wert der Kontrolle zu stellen checked und unchecked Staaten wie unten Bild:

Toggle Switch-Steuerelement in Windows Forms

Hier ist mein code:

public class MyCheckBox:CheckBox
{
    public MyCheckBox()
    {
        this.Appearance = System.Windows.Forms.Appearance.Button;
        this.BackColor = Color.Transparent;
        this.TextAlign = ContentAlignment.MiddleCenter;
        this.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
        this.FlatAppearance.BorderColor = Color.RoyalBlue;
        this.FlatAppearance.BorderSize = 2;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        this.OnPaintBackground(e);
        using (var path = new GraphicsPath())
        {
            var c = e.Graphics.ClipBounds;
            var r = this.ClientRectangle;
            r.Inflate(-FlatAppearance.BorderSize, -FlatAppearance.BorderSize);
            path.AddEllipse(r);
            e.Graphics.SetClip(path);
            base.OnPaint(e);
            e.Graphics.SetClip(c);
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            if (this.Checked)
            {
                using (var p = new Pen(FlatAppearance.BorderColor,
                                       FlatAppearance.BorderSize))
                {
                    e.Graphics.DrawEllipse(p, r);
                }
            }
        }
    }
}
  • hi @SurvivalMachine, warum u sind downvoting meine Frage.wenn u irgendwelche Zweifel haben,lass es mich wissen.
  • "Wo ist der Fehler in meinem code?" <-- Es wäre nett um mehr Informationen zu erhalten, wie es nun gebrochen und wo glaubst du, könnte der Fehler sein.
  • Die Frage ist nun genug Informationen enthält, die mit einer klaren Problemstellung und codes. Die Frage und die Antwort ist ein gutes Beispiel für WinForms Entwicklern zu zeigen, wie Sie anpassen können, kann das rendering einer check-box so Aussehen. Die Frage ist nun klarer. Ich glaube, es kann wieder geöffnet werden selbst gewählt. Diese Weise Frage und Antwort werden mehr nützlich für die zukünftigen Leser.
InformationsquelleAutor GOPAL YADAV | 2016-07-18
Schreibe einen Kommentar