private protected void SetCheckState(CheckStateType value, bool firechange) { if (checkstate != value) { checkstate = value; if (GroupRadioButton && Parent != null && checkstate == CheckStateType.Checked) { foreach (GLCheckBoxBase c in Parent.ControlsZ.OfType <GLCheckBoxBase>()) { if (c != this && c.GroupRadioButton == true && c.checkstate != CheckStateType.Unchecked) // if not us, in a group, and not unchecked { c.checkstate = CheckStateType.Unchecked; // set directly if (firechange) { c.OnCheckChanged(); // fire change } c.Invalidate(); } } } if (firechange) { OnCheckChanged(); // fire change on us } Invalidate(); } }
private protected void DrawTick(Rectangle checkarea, Color c1, CheckStateType chk, Graphics gr) { gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; if (chk == CheckStateType.Checked) { Point pt1 = new Point(checkarea.X + 2, checkarea.Y + checkarea.Height / 2 - 1); Point pt2 = new Point(checkarea.X + checkarea.Width / 2 - 1, checkarea.Bottom - 2); Point pt3 = new Point(checkarea.X + checkarea.Width - 2, checkarea.Y); using (Pen pcheck = new Pen(c1, 2.0F)) { gr.DrawLine(pcheck, pt1, pt2); gr.DrawLine(pcheck, pt2, pt3); } } else if (chk == CheckStateType.Indeterminate) { Size cb = new Size(checkarea.Width - 5, checkarea.Height - 5); if (cb.Width > 0 && cb.Height > 0) { using (Brush br = new SolidBrush(c1)) { gr.FillRectangle(br, new Rectangle(new Point(checkarea.X + 2, checkarea.Y + 2), cb)); } } } gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; }