#region "BlinkLabel"
public class BlinkLabel : Label
{
private System.Windows.Forms.Timer g_objTimer = new System.Windows.Forms.Timer();
private int g_iBlinkTime = 0;
private bool g_bVisible = true;
private bool g_bIsBlinking = false;
private bool g_bDefaultVisible = true;
[System.ComponentModel.DefaultValue(true)]
public new bool Visible {
get { return g_bDefaultVisible; }
set {
g_bDefaultVisible = value;
if (base.DesignMode == true) {
base.Visible = true;
} else {
base.Visible = value;
}
if (g_bDefaultVisible == true & g_bIsBlinking == true) {
g_objTimer.Interval = g_iBlinkTime;
g_objTimer.Enabled = true;
//Remove any previous handlers
g_objTimer.Tick -= Elapsed;
g_objTimer.Tick += Elapsed;
}
if (g_bDefaultVisible == false & g_bIsBlinking == true) {
g_objTimer.Enabled = false;
g_objTimer.Tick -= Elapsed;
}
}
}
[System.ComponentModel.DefaultValue(0)]
public int BlinkTime {
get { return g_iBlinkTime; }
set {
g_iBlinkTime = value;
if (base.DesignMode == false) {
if (g_iBlinkTime != 0) {
//If the control's visible property is false
//go into blink mode but dont show the control
if (g_bDefaultVisible == true) {
g_objTimer.Interval = g_iBlinkTime;
g_objTimer.Enabled = true;
g_objTimer.Tick += Elapsed;
}
g_bIsBlinking = true;
} else {
g_objTimer.Enabled = false;
g_objTimer.Tick -= Elapsed;
base.Visible = g_bDefaultVisible;
g_bIsBlinking = false;
}
}
}
}
private void Elapsed(object sender, System.EventArgs e)
{
if (g_bVisible)
g_bVisible = false;
else
g_bVisible = true;
base.Visible = g_bVisible;
}
}
#endregion