Visual C# Developer Center > Visual C# Forums > Visual C# General > Treeview control - How to make a node blink?
Ask a questionAsk a question
 

AnswerTreeview control - How to make a node blink?

  • Friday, November 06, 2009 6:19 PMKikeman Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    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

  • Friday, November 06, 2009 6:42 PMTamer OzMVPUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     AnswerHas Code
    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;
            }
        }
    

All Replies

  • Friday, November 06, 2009 6:42 PMTamer OzMVPUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     AnswerHas Code
    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;
            }
        }
    
  • Friday, November 06, 2009 8:30 PMKikeman Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Do you invalidate the window in every tick?
  • Saturday, November 07, 2009 3:53 AMTamer OzMVPUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Hi,

    If you need to repaint the control you can invalidate window.