Visual C# Developer Center >
Visual C# Forums
>
Visual C# General
>
Treeview control - How to make a node blink?
Treeview control - How to make a node blink?
- Hi,
Is there a "elegant" way to make blink a treeview node?
I am thinking to use a timer with the collection of nodes that I want to make the blink effect, and update the icon ...
Answers
- Hi,
You can develop your custom control for this purpose. The logic you mentioned was correct. Here is a sample control that I developed by the logic you mentioned.
public class BlinkingTreeView : TreeView { private Timer t = new Timer(); private List<TreeNode> blinkingNodes = new List<TreeNode>(); public BlinkingTreeView() { t.Interval = 1000; t.Tick += new EventHandler(t_Tick); } bool isNodeBlinked = false; void t_Tick(object sender, EventArgs e) { foreach (TreeNode tn in blinkingNodes) { if (isNodeBlinked) { //update Icon tn.Text = tn.Text.Substring(0, tn.Text.Length - 1);//to test isNodeBlinked = false; } else { //update Icon tn.Text = tn.Text + "*";//to test isNodeBlinked = true; } } } public void AddBlinkNode(TreeNode n) { blinkingNodes.Add(n); } public void RemoveBlinkNode(TreeNode n) { blinkingNodes.Remove(n); } public void ClearBlinkNodes() { blinkingNodes.Clear(); } public List<TreeNode> BlinkingNodes { get { return blinkingNodes; } } public int BlinkInterval { get { return t.Interval; } set { t.Interval = value; } } public void StartBlinking() { isNodeBlinked = false; t.Enabled = true; } public void StopBlinking() { t.Enabled = false; } }
- Proposed As Answer byTamer OzMVPSunday, November 08, 2009 3:04 PM
- Marked As Answer byRoahn LuoMSFT, ModeratorTuesday, November 10, 2009 11:54 AM
All Replies
- Hi,
You can develop your custom control for this purpose. The logic you mentioned was correct. Here is a sample control that I developed by the logic you mentioned.
public class BlinkingTreeView : TreeView { private Timer t = new Timer(); private List<TreeNode> blinkingNodes = new List<TreeNode>(); public BlinkingTreeView() { t.Interval = 1000; t.Tick += new EventHandler(t_Tick); } bool isNodeBlinked = false; void t_Tick(object sender, EventArgs e) { foreach (TreeNode tn in blinkingNodes) { if (isNodeBlinked) { //update Icon tn.Text = tn.Text.Substring(0, tn.Text.Length - 1);//to test isNodeBlinked = false; } else { //update Icon tn.Text = tn.Text + "*";//to test isNodeBlinked = true; } } } public void AddBlinkNode(TreeNode n) { blinkingNodes.Add(n); } public void RemoveBlinkNode(TreeNode n) { blinkingNodes.Remove(n); } public void ClearBlinkNodes() { blinkingNodes.Clear(); } public List<TreeNode> BlinkingNodes { get { return blinkingNodes; } } public int BlinkInterval { get { return t.Interval; } set { t.Interval = value; } } public void StartBlinking() { isNodeBlinked = false; t.Enabled = true; } public void StopBlinking() { t.Enabled = false; } }
- Proposed As Answer byTamer OzMVPSunday, November 08, 2009 3:04 PM
- Marked As Answer byRoahn LuoMSFT, ModeratorTuesday, November 10, 2009 11:54 AM
- Do you invalidate the window in every tick?
- Hi,
If you need to repaint the control you can invalidate window.


