Search code examples
c#menustripstatusstriptoolstripmenu

StatusBar MenuStripItem Select Mouse


I expose you my problem today. I created a statusStripLabel for showing the current name - the selected item of MenuStrip or ToolStripMenuItem when the mouse is hover it. I have this code : ( it's working )

private void ouvrirToolStripMenuItem1_MouseHover(object sender, EventArgs e)
{
    ToolStripMenuItem houver = (ToolStripMenuItem)sender;
    MenuStatusLabel.Text = houver.Text;
}

But I want make for all toolstripmenu and no just one. ( a function or something like that )


Solution

  • This fit from your problem and good solution, I modified the code from this Link

     private void Form1_Load(object sender, EventArgs e)
            {
                toolStripStatusLabel1.Text = "Ready...";
                foreach (ToolStripMenuItem item in menuStrip1.Items)
                {
                    TraverseMenuItemHint(item);
                }
            }
    
            private void MenuHint_Hint(object sender, EventArgs e)
            {
                toolStripStatusLabel1.Text = (sender as ToolStripMenuItem).Text;
            }
    
            private void TraverseMenuItemHint(ToolStripMenuItem element)
            {
                for (int i = 0; i < element.DropDownItems.Count; i++)
                {
                    if (!(element.DropDownItems[i] is ToolStripSeparator))
                    {
                        ToolStripMenuItem item = element.DropDownItems[i] as ToolStripMenuItem;
                        if (item.Text.Length > 0)
                            item.MouseEnter += MenuHint_Hint;
                        TraverseMenuItemHint(item);
                    }
                }
            }
    
            private void fileToolStripMenuItem_DropDownClosed(object sender, EventArgs e)
            {
                toolStripStatusLabel1.Text = "Ready...";
        }