- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
[C#] Hướng dẫn custom Radio Button trên Winform
Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách custom Radio Button giống Material Design trên lập trình C#, Winform.
[C#] Custom Radio Button Winform
Dưới đây, là giao diện demo ứng dụng:
Bên trái là Radio Button chưa custom
và Bên phải là Radio Button đã được mình custom lại.
Ở Radio custom lại, bạn có thể lựa chọn màu sắc check và uncheck ở thuộc tính property của nó.
Các bạn tạo cho mình một class VBRadioButton.cs
code như bên dưới:
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 customRadio
{
class VBRadioButton : RadioButton
{
//Fields
private Color checkedColor = Color.MediumSlateBlue;
private Color unCheckedColor = Color.Gray;
//Properties
public Color CheckedColor
{
get
{
return checkedColor;
}
set
{
checkedColor = value;
this.Invalidate();
}
}
public Color UnCheckedColor
{
get
{
return unCheckedColor;
}
set
{
unCheckedColor = value;
this.Invalidate();
}
}
//Constructor
public VBRadioButton()
{
this.MinimumSize = new Size(0, 21);
this.Cursor = Cursors.Hand;
}
//Overridden methods
protected override void OnPaint(PaintEventArgs pevent)
{
//Fields
Graphics graphics = pevent.Graphics;
graphics.SmoothingMode = SmoothingMode.AntiAlias;
float rbBorderSize = 18F;
float rbCheckSize = 12F;
RectangleF rectRbBorder = new RectangleF()
{
X = 0.5F,
Y = (this.Height - rbBorderSize) / 2, //Center
Width = rbBorderSize,
Height = rbBorderSize
};
RectangleF rectRbCheck = new RectangleF()
{
X = rectRbBorder.X + ((rectRbBorder.Width - rbCheckSize) / 2), //Center
Y = (this.Height - rbCheckSize) / 2, //Center
Width = rbCheckSize,
Height = rbCheckSize
};
//Drawing
using (Pen penBorder = new Pen(checkedColor, 1.6F))
using (SolidBrush brushRbCheck = new SolidBrush(checkedColor))
using (SolidBrush brushText = new SolidBrush(this.ForeColor))
{
//Draw surface
graphics.Clear(this.BackColor);
//Draw Radio Button
if (this.Checked)
{
graphics.DrawEllipse(penBorder, rectRbBorder);//Circle border
graphics.FillEllipse(brushRbCheck, rectRbCheck); //Circle Radio Check
}
else
{
penBorder.Color = unCheckedColor;
graphics.DrawEllipse(penBorder, rectRbBorder); //Circle border
}
//Draw text
graphics.DrawString(this.Text, this.Font, brushText,
rbBorderSize + 8, (this.Height - TextRenderer.MeasureText(this.Text, this.Font).Height) / 2);//Y=Center
}
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Width = TextRenderer.MeasureText(this.Text, this.Font).Width + 30;
}
}
}
Sau đó, các bạn bấm build project và vào winform main ở thanh Toolbox sẽ có control Radio Custom xuất hiện.
Các bạn kéo ra và chọn màu sắc check như hình bên dưới:
Thanks for watching!