Siticone Radio Button
The SiticoneRadioButton is a modernized version of the standard Windows Forms RadioButton.
It provides two distinct display modes: a traditional circular selection style and a "Contained" mode that functions like a selectable card or button.
It automatically handles grouping logic within its parent container, ensuring mutually exclusive selection.
Standard Mode
In its default state, the control renders a circular indicator next to the text label.
| Property | Type | Description |
|---|---|---|
Checked |
bool | Indicates whether the radio button is selected. Setting this to true automatically deselects other radio buttons in the same container. |
CircleSize |
int | The diameter of the radio circle in pixels (Default: 20). |
CheckedColor |
Color | The color of the circle (both border and fill) when selected. |
UncheckedColor |
Color | The color of the circle border when not selected. |
Contained Mode
By setting IsContained = true, the control transforms into a rectangular card.
This is ideal for modern UIs like pricing plan selectors, shipping method choices, or wizard steps.
| Property | Type | Description |
|---|---|---|
IsContained |
bool | Enables the container background rendering mode. |
ContainerPadding |
int | Space between the container border and the internal content (radio circle and text). |
ContainerBackColor |
Color | Background color of the container in its idle state. |
ContainerCheckedColor |
Color | Background color when the item is selected. |
ContainerBorderWidth |
int | Thickness of the container border. |
CornerRadius... |
int | Individual radius controls for TopLeft, TopRight, BottomLeft, and BottomRight corners. |
Animations
The control features built-in animations for state changes and user interaction.
| Property | Type | Description |
|---|---|---|
EnableRipple |
bool | Enables a Material Design-style ripple effect on click. |
RippleColor |
Color | Color of the ripple animation. |
RippleStyle |
Enum | Animation curve: Standard, Bounce, Elastic, Sharp, Smooth. |
CanShake |
bool | If ReadOnly, the control shakes when clicked to indicate it cannot be changed. |
Events
Standard events for handling selection changes.
// Fired when the Checked state changes.
// Note: In a group, this fires for both the newly selected item (true)
// and the previously selected item (false).
optStandard.CheckedChanged += (s, e) =>
{
if (optStandard.Checked)
{
ApplyStandardSettings();
}
};
Designer Support
The control includes a comprehensive Smart Tag menu in Visual Studio.
| Category | Features |
|---|---|
Themes |
One-click presets like Light, Dark, Material Blue, Contained Light, Accent Red, etc. |
Layout |
Quick access to Container Padding, Border Width, and Corner Radius. |
Settings |
Copy/Paste visual settings between multiple radio buttons. |
Usage Examples
Example 1: Basic Radio Group
Standard selection group for a form.
private void SetupGenderSelection()
{
// All SiticoneRadioButtons in the same parent container
// automatically form a mutually exclusive group.
rbMale.Text = "Male";
rbFemale.Text = "Female";
rbOther.Text = "Other";
// Apply a consistent theme
rbMale.CheckedColor = Color.DodgerBlue;
rbFemale.CheckedColor = Color.DodgerBlue;
rbOther.CheckedColor = Color.DodgerBlue;
}
Example 2: Payment Method Selection (Contained)
Using the "Contained" mode to create selectable cards for payment options.
private void SetupPaymentOptions()
{
rbCreditCard.IsContained = true;
rbCreditCard.Text = "Credit Card";
rbCreditCard.ContainerPadding = 10;
rbCreditCard.ContainerBorderColor = Color.LightGray;
// Highlight style when selected
rbCreditCard.ContainerCheckedColor = Color.FromArgb(230, 240, 255); // Light Blue BG
rbCreditCard.ContainerCheckedBorderColor = Color.DodgerBlue;
rbPaypal.IsContained = true;
rbPaypal.Text = "PayPal";
// Copy styles from first button...
}
Example 3: Read-Only Status Display
Using radio buttons to display a fixed status that cannot be changed by the user.
private void ShowOrderStatus(int statusStep)
{
rbStep1.IsReadOnly = true;
rbStep2.IsReadOnly = true;
rbStep3.IsReadOnly = true;
rbStep1.Checked = (statusStep >= 1);
rbStep2.Checked = (statusStep >= 2);
rbStep3.Checked = (statusStep >= 3);
// Enable shake feedback if user tries to click
rbStep1.CanShake = true;
}
Example 4: Material Design Theme
Programmatically applying a Material Design look with ripples.
private void ApplyMaterialStyle(SiticoneRadioButton rb)
{
rb.CheckedColor = Color.FromArgb(33, 150, 243); // Material Blue
rb.UncheckedColor = Color.FromArgb(117, 117, 117);
rb.EnableRipple = true;
rb.RippleColor = Color.FromArgb(40, 33, 150, 243);
rb.RippleStyle = SiticoneRadioButton.RippleAnimationStyle.Smooth;
}