Siticone Text Button
The SiticoneTextButton control provides an elegant, text-centric interactive element designed for minimalistic interfaces.
Unlike standard buttons that emphasize borders and backgrounds, this control focuses on typography, hyperlinks, and subtle animations.
It is ideal for navigation menus, hyperlink-style interactions, and "flat" design systems. It supports advanced features like particle effects, dynamic glowing, text transformations, and system theme monitoring.
Text Styling & Typography
Control the font, alignment, underline styles, and text transformations.
| Property | Type | Description & Usage Example |
|---|---|---|
ShowUnderline |
bool | btn.ShowUnderline = false; Determines whether an underline is shown in the normal state. |
HoverShowUnderline |
bool | btn.HoverShowUnderline = true; If true, the underline appears smoothly when the mouse hovers over the text. |
UnderlineColor |
Color | btn.UnderlineColor = Color.Blue; |
UnderlineHeight |
int | btn.UnderlineHeight = 1; |
UnderlineStyle |
Enum | btn.UnderlineStyle = TextButtonUnderlineStyle.Dashed; Options: Solid, Dashed, Dotted. |
TextTransform |
Enum | btn.TextTransform = TextButtonTextTransform.Uppercase; Visual text transformation. Options: None, Uppercase, Lowercase, Capitalize. |
TextColor |
Color | btn.TextColor = Color.DimGray; |
HoverTextColor |
Color | btn.HoverTextColor = Color.Black; |
DisabledTextColor |
Color | btn.DisabledTextColor = Color.Gray; |
ReadOnlyTextColor |
Color | btn.ReadOnlyTextColor = Color.LightGray; |
NormalFontStyle |
FontStyle | btn.NormalFontStyle = FontStyle.Regular; |
HoverFontStyle |
FontStyle | btn.HoverFontStyle = FontStyle.Bold; |
PressedFontStyle |
FontStyle | btn.PressedFontStyle = FontStyle.Italic; |
RightToLeft |
RightToLeft | btn.RightToLeft = RightToLeft.Yes; |
TextLeftPadding |
int | btn.TextLeftPadding = 5; |
TextRightPadding |
int | btn.TextRightPadding = 5; |
TextTopPadding |
int | btn.TextTopPadding = 5; |
TextBottomPadding |
int | btn.TextBottomPadding = 5; |
EnableTextWrapping |
bool | btn.EnableTextWrapping = true; Enables text to wrap to multiple lines when it exceeds button width. |
AutoSizeBasedOnText |
bool | btn.AutoSizeBasedOnText = true; Automatically adjusts button size based on text content. |
Visual Effects & Animation
Enable high-end visual feedback including particles, glowing, and material ripples.
| Property | Type | Description & Usage Example |
|---|---|---|
EnableRippleEffect |
bool | btn.EnableRippleEffect = true; Toggles the Material Design-inspired ripple animation on click. |
RippleColor |
Color | btn.RippleColor = Color.FromArgb(100, 0, 0, 255); |
RippleOpacity |
float | btn.RippleOpacity = 0.3f; Controls the transparency of the ripple effect (0.0 to 1.0). |
RippleRadiusMultiplier |
float | btn.RippleRadiusMultiplier = 0.8f; Controls the max size of the ripple relative to the button diagonal. |
CanGlow |
bool | btn.CanGlow = true; Activates a dynamic, pulsating glow effect around the text on hover. |
GlowColor |
Color | btn.GlowColor = Color.Cyan; |
GlowRadius |
float | btn.GlowRadius = 20f; |
GlowIntensity |
int | btn.GlowIntensity = 100; |
UseParticles |
bool | btn.UseParticles = true; Explodes small particles from the click location for a gamified effect. |
ParticleCount |
int | btn.ParticleCount = 20; |
ParticleColor |
Color | btn.ParticleColor = Color.White; |
EnablePressAnimation |
bool | btn.EnablePressAnimation = true; Scales the button down slightly when pressed. |
PressAnimationScale |
float | btn.PressAnimationScale = 0.97f; Controls how much the button scales down when pressed. |
EnableShadow |
bool | btn.EnableShadow = true; Enables drop shadow effect for the button text. |
ShadowColor |
Color | btn.ShadowColor = Color.Black; |
ShadowOffset |
Point | btn.ShadowOffset = new Point(2, 2); |
ShadowBlur |
int | btn.ShadowBlur = 5; |
UseAdvancedRendering |
bool | btn.UseAdvancedRendering = true; Enables high-quality anti-aliasing and smooth rendering. |
HoverTransitionDuration |
int | btn.HoverTransitionDuration = 250; Duration of hover animation in milliseconds. |
PressTransitionDuration |
int | btn.PressTransitionDuration = 150; Duration of press animation in milliseconds. |
Interaction & Behavior
Advanced interaction patterns like long-press detection and toggle states.
| Property | Type | Description & Usage Example |
|---|---|---|
IsToggleButton |
bool | btn.IsToggleButton = true; Changes behavior to maintain an On/Off state. |
IsToggled |
bool | if (btn.IsToggled) { ... } Gets or sets the current toggle state. |
EnableLongPress |
bool |
btn.EnableLongPress = true;
Enables the LongPressed event.
|
LongPressDurationMS |
int | btn.LongPressDurationMS = 1000; |
DialogResult |
DialogResult | btn.DialogResult = DialogResult.OK; |
IsReadOnly |
bool | btn.IsReadOnly = true; Makes the button non-interactive but keeps it distinct from Disabled. |
CanShake |
bool | btn.CanShake = true; Shakes when clicked in ReadOnly mode. |
CanBeep |
bool | btn.CanBeep = true; Plays system beep when clicked in ReadOnly mode. |
ShakeDuration |
int | btn.ShakeDuration = 500; |
ShakeIntensity |
int | btn.ShakeIntensity = 5; |
HintText |
string | btn.HintText = "Additional information"; |
CustomCursor |
Cursor | btn.CustomCursor = Cursors.Hand; |
TooltipText |
string | btn.TooltipText = "Click me!"; |
ContextMenuStripEx |
ContextMenuStrip | btn.ContextMenuStripEx = myContextMenu; |
Theming & Monitoring
Automatically adapt to the OS theme changes (Light/Dark mode).
| Property | Type | Description |
|---|---|---|
IsSystemThemeMonitoringEnabled |
bool | Enables automatic detection of Windows system theme changes. |
CurrentSystemTheme |
ThemeMode | Gets the current detected theme (Light, Dark, or Custom). |
Events
The control exposes several custom events to handle advanced interactions and state changes.
// 1. Long Press Event
textBtn.LongPressed += (s, e) =>
{
MessageBox.Show("Additional Options Menu");
};
// 2. Toggle Changed
textBtn.ToggleChanged += (s, e) =>
{
if (textBtn.IsToggled)
ActivateFeature();
else
DeactivateFeature();
};
// 3. State Changed
textBtn.StateChanged += (s, e) =>
{
Console.WriteLine($"State changed from {e.OldState} to {e.NewState}");
};
// 4. Animation Completed
textBtn.AnimationCompleted += (s, e) =>
{
Console.WriteLine($"Animation {e.AnimationType} completed");
};
// 5. ReadOnly Interaction
textBtn.ReadOnlyInteraction += (s, e) =>
{
if (e.Type == InteractionType.Click)
Console.WriteLine("User clicked a locked button.");
};
// 6. Animation Effect Started
textBtn.AnimationEffectStarted += (s, e) =>
{
Console.WriteLine($"Animation effect {e.EffectType} started at {e.Location}");
};
// 7. System Theme Changed
textBtn.SystemThemeChanged += (s, e) =>
{
Debug.WriteLine($"System theme changed to: {e.SystemTheme}");
};
// 8. Theme Changed
textBtn.ThemeChanged += (s, e) =>
{
Debug.WriteLine($"Theme changed from {e.OldTheme} to {e.NewTheme}");
};
Public Methods
| Method | Description |
|---|---|
PerformClick() |
Simulates a click event on the button. |
StartShaking() |
Manually triggers the shake animation sequence. |
StopShaking() |
Immediately stops any active shake animation. |
Enumerations
The control defines several enums for configuration and event handling.
ThemeMode
| Value | Description |
|---|---|
Light |
Light theme mode |
Dark |
Dark theme mode |
Custom |
Custom theme (not following system) |
AnimationType
| Value | Description |
|---|---|
Hover |
Hover state animation |
Press |
Press state animation |
Release |
Release state animation |
Ripple |
Ripple effect animation |
Shake |
Shake animation |
Glow |
Glow effect animation |
Particle |
Particle effect animation |
StateTransition |
State transition animation |
InteractionType
| Value | Description |
|---|---|
Click |
Standard click interaction |
DoubleClick |
Double-click interaction |
RightClick |
Right mouse button click |
MiddleClick |
Middle mouse button click |
Hover |
Mouse hover interaction |
Leave |
Mouse leave interaction |
ButtonState
| Value | Description |
|---|---|
Normal |
Default button state |
Hover |
Mouse is hovering over button |
Pressed |
Button is being pressed |
Disabled |
Button is disabled |
ReadOnly |
Button is in read-only mode |
Toggled |
Button is toggled on (for toggle buttons) |
Usage Examples
Example 1: Hyperlink Style
Creates a button that behaves like a web hyperlink.
var linkBtn = new SiticoneTextButton();
linkBtn.Text = "Visit Website";
linkBtn.TextColor = Color.DodgerBlue;
linkBtn.HoverTextColor = Color.Blue;
linkBtn.Cursor = Cursors.Hand;
// Only show underline on hover
linkBtn.ShowUnderline = false;
linkBtn.HoverShowUnderline = true;
linkBtn.UnderlineColor = Color.Blue;
// Clean look
linkBtn.EnableShadow = false;
linkBtn.EnableRippleEffect = false;
Example 2: Interactive "Gamified" Button
A high-impact button with particles and glow effects.
var gameBtn = new SiticoneTextButton();
gameBtn.Text = "LEVEL UP";
gameBtn.Font = new Font("Segoe UI", 14f, FontStyle.Bold);
gameBtn.TextColor = Color.Gold;
// Enable Effects
gameBtn.CanGlow = true;
gameBtn.GlowColor = Color.Orange;
gameBtn.GlowIntensity = 200;
gameBtn.UseParticles = true;
gameBtn.ParticleCount = 30;
gameBtn.ParticleColor = Color.Yellow;
gameBtn.EnablePressAnimation = true;
Example 3: Toggle Button with State Management
A toggle button with visual feedback for different states.
var toggleBtn = new SiticoneTextButton();
toggleBtn.Text = "Toggle Feature";
toggleBtn.IsToggleButton = true;
toggleBtn.EnableRippleEffect = true;
toggleBtn.RippleColor = Color.Purple;
// Different colors for toggled state
toggleBtn.ToggleChanged += (s, e) =>
{
if (toggleBtn.IsToggled)
{
toggleBtn.TextColor = Color.White;
toggleBtn.BackColor = Color.Purple;
}
else
{
toggleBtn.TextColor = Color.Purple;
toggleBtn.BackColor = Color.Transparent;
}
};