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:
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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß, das ist ein winforms Frage. Aber möchten Sie vielleicht einen Blick auf Kippschalter oder Lesen Sie mehr über Universal-Windows-App-Komponenten. Wie auch immer, hier ist eine Antwort für Windows forms-Entwickler. Es zeigt, wie wir uns anpassen können das rendering einer check-box so Aussehen.
Aktuell, Sie sind in der Zeichnung nur einer ellipse, es ist ruhig, ein toggle-button. Aber wenn Sie wollen, um zu zeigen, wie es das Bild unten, sollten Sie zuerst zeichnen Sie eine Runde Form für den hintergrund, dann basierend auf
Checked
Wert zeichnen Sie die check-Kreis. Unter Verwendung der codes in Beispiel Teil der Antwort können Sie eineCheckBox
mit solchen UI:Beispiel
Wichtig an diesem Beispiel ist es ist ganz ein
CheckBox
Kontrolle und unterstützt die Kontrolle mit Maus und Tastatur, unterstützt auch Daten-Bindung und alle anderen standard-features vonCheckBox
. Der code ist nicht perfekt, aber ein guter Startpunkt, um eine ja/Nein-Schalter: