Visual C# Developer Center > Visual C# Forums > Visual C# General > How to make ToolStripItem.DismissWhenClicked FALSE
Ask a questionAsk a question
 

Proposed AnswerHow to make ToolStripItem.DismissWhenClicked FALSE

  • Friday, October 30, 2009 9:08 AMablackdragon Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    I want to keep one ToolStripItem of a MenuStrip visible after I click it, how to?
    In the document, is seems ToolStripItem.DismissWhenClicked controls this, but it cannot be accessed or set.
    Thank you. 
     
    Yours, Adun.
     

All Replies

  • Friday, October 30, 2009 11:58 AMIMiron Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Has Code
    Won't something like this work for you?


        class ToolStripItemEx : ToolStripItem
        {
            protected override bool DismissWhenClicked
            {
                get
                {
                    return true;
                }
            }
        }
    

    In the get statement you could specify when to be dismissed and when not.

    Ionut
  • Saturday, October 31, 2009 4:43 AMablackdragon Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    Will this make the ToolStripItem Visible after I click it?
    I want to process the click event, and keep it visible.
    Thank you. 
     

  • Saturday, October 31, 2009 5:19 AMTamer OzMVPUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Proposed AnswerHas Code
    Hi,

    You can write this code to CheckedChanged event of ToolStipMenuItem that you want to keep visible after clicked.

            private void bToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
            {
                ((ToolStripMenuItem)bToolStripMenuItem.OwnerItem).ShowDropDown();
                
            }
    
    Or you can develop your custom ToolStripMenuItemClass like following.

       public class MyToolStripMenuItem : ToolStripMenuItem
        {
            protected override void OnCheckedChanged(EventArgs e)
            {
    
                base.OnCheckedChanged(e);
                ((ToolStripMenuItem)this.OwnerItem).ShowDropDown();
            }
        }
    
  • Saturday, October 31, 2009 8:05 AMablackdragon Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    Thank you, I 'll try in your way later.
     

  • Saturday, October 31, 2009 8:11 AMablackdragon Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    In this way, there is one problem,
    after I click a 4th level menu item, the item and its parent( a 3rd level menu item) are visible,
    while the 2nd level menu item is invisible now.
    Shall I call the ShowDropDown method recursively to the root? 
     

  • Thursday, November 05, 2009 2:21 AMHarry ZhuMSFT, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Proposed Answer
    Hi,

    You might need to call the method on every ownerItem:

                ToolStripMenuItem ts = (ToolStripMenuItem)bToolStripMenuItem.OwnerItem;
                while (ts!= null)
                {
                    ts.ShowDropDown();
                    //Console.WriteLine(ts.Name);
                    ts = (ToolStripMenuItem)ts.OwnerItem;            
     
                }

    Harry
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
  • Sunday, November 08, 2009 8:38 AMablackdragon Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Thank you, Harry.
    I 'm afraid this method does not work as expected. 
     
  • Monday, November 09, 2009 1:40 AMHarry ZhuMSFT, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Hi,

    Could you please be more specific ? I test it and these items does not disapear after I click one .

    Harry
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.