Custom RadioButton WinForm C# RashiUI

Spread the love
Custom RadioButton

Custom RadioButton WinForm C# RashiUI tools

Hello friend’s this is Rashid Hussain come with another video In this tutorial, you will learn how to construct a Custom Radio Button by adding some appearance properties to the existing Windows Form Radio Button so that we can change the color style.

Step 1

Open Visual Studio and Create new Windows Form application

Step 2

After Creating win forms Project Click On Solution Explorer 

Then Right Click On Project Name => Add => Class 

Step 3

add the following  Namespace in the Class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

Then inherit the Class with RadioButton

OnPaint

 protected override void OnPaint(PaintEventArgs pevent)
        {
            Graphics graphics = pevent.Graphics;
            graphics.SmoothingMode = SmoothingMode.AntiAlias;
            float bordersize = 19f;
            float checkedsize = 13f;

            RectangleF rectangleBorder = new RectangleF()
            {
                X = 0.6f,
                Y = (this.Height - bordersize) / 2,
                Width = bordersize,
                Height = bordersize,
            };

            RectangleF rectangleChecked = new RectangleF()
            {
                X = rectangleBorder.X + ((rectangleBorder.Width - checkedsize) / 2),
                Y = (this.Height - checkedsize) / 2,
                Width = checkedsize,
                Height = checkedsize
            };


            using (Pen PBorder = new Pen(CheckColor, 1.7f))
            using (SolidBrush solidBrush = new SolidBrush(CheckColor))
            using (SolidBrush Btext = new SolidBrush(this.ForeColor))
            {
                graphics.Clear(this.BackColor);
                if (this.Checked)
                {
                    graphics.DrawEllipse(PBorder, rectangleBorder);
                    graphics.FillEllipse(solidBrush, rectangleChecked);
                }
                else
                {
                    PBorder.Color = unCheckColor;
                    graphics.DrawEllipse(PBorder,rectangleBorder);
                }

                graphics.DrawString(this.Text, this.Font, Btext,
                bordersize + 8, (this.Height - TextRenderer.MeasureText(this.Text, this.Font).Height) / 2);


            }


        }


OnResize

 
   protected override void OnResize(EventArgs e)
        {
            base.OnResize(e);
            this.Width = TextRenderer.MeasureText(this.Text, this.Font).Width + 30;
        }

Complete Custom RadioButton Class Code

 
  using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace RashiUI
{
    class RashiRadioButton : RadioButton
    {

        //Fields

        private Color checkColor = Color.LightSeaGreen;
        private Color unCheckColor = Color.Gray;

        public Color CheckColor
        {
            get
            {
               return checkColor;
            }
            set
            {
                checkColor = value;
                this.Invalidate();
            }
        }
        public Color UnCheckColor
        {
            get
            {
                return unCheckColor;
            }
            set
            {
                unCheckColor = value;
                this.Invalidate();
            }
        }

        public RashiRadioButton()
        {
            this.MinimumSize = new Size(0, 24);
        }


        protected override void OnPaint(PaintEventArgs pevent)
        {
            Graphics graphics = pevent.Graphics;
            graphics.SmoothingMode = SmoothingMode.AntiAlias;
            float bordersize = 19f;
            float checkedsize = 13f;

            RectangleF rectangleBorder = new RectangleF()
            {
                X = 0.6f,
                Y = (this.Height - bordersize) / 2,
                Width = bordersize,
                Height = bordersize,
            };

            RectangleF rectangleChecked = new RectangleF()
            {
                X = rectangleBorder.X + ((rectangleBorder.Width - checkedsize) / 2),
                Y = (this.Height - checkedsize) / 2,
                Width = checkedsize,
                Height = checkedsize
            };


            using (Pen PBorder = new Pen(CheckColor, 1.7f))
            using (SolidBrush solidBrush = new SolidBrush(CheckColor))
            using (SolidBrush Btext = new SolidBrush(this.ForeColor))
            {
                graphics.Clear(this.BackColor);
                if (this.Checked)
                {
                    graphics.DrawEllipse(PBorder, rectangleBorder);
                    graphics.FillEllipse(solidBrush, rectangleChecked);
                }
                else
                {
                    PBorder.Color = unCheckColor;
                    graphics.DrawEllipse(PBorder,rectangleBorder);
                }

                graphics.DrawString(this.Text, this.Font, Btext,
                bordersize + 8, (this.Height - TextRenderer.MeasureText(this.Text, this.Font).Height) / 2);


            }


        }

        protected override void OnResize(EventArgs e)
        {
            base.OnResize(e);
            this.Width = TextRenderer.MeasureText(this.Text, this.Font).Width + 30;
        }


    }
}

Video tutorial​

Click the button below for source code

Thank you for reading this article. Please don’t forget to subscribe our official YouTube Channel RashiCode

Leave a Reply

Your email address will not be published.