Microsoft Developer Network > Página Inicial dos Fóruns > Visual C# General > How to make ToolStripItem.DismissWhenClicked FALSE
Fazer uma PerguntaFazer uma Pergunta
 

Resposta PropostaHow to make ToolStripItem.DismissWhenClicked FALSE

  • sexta-feira, 30 de outubro de 2009 9:08ablackdragon Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    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.
     

Todas as Respostas

  • sexta-feira, 30 de outubro de 2009 11:58IMiron Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Contém Código
    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
  • sábado, 31 de outubro de 2009 4:43ablackdragon Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

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

  • sábado, 31 de outubro de 2009 5:19Tamer OzMVPMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Resposta PropostaContém Código
    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();
            }
        }
    
  • sábado, 31 de outubro de 2009 8:05ablackdragon Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

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

  • sábado, 31 de outubro de 2009 8:11ablackdragon Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    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? 
     

  • quinta-feira, 5 de novembro de 2009 2:21Harry ZhuMSFT, ModeratorMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Resposta Proposta
    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.
  • domingo, 8 de novembro de 2009 8:38ablackdragon Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Thank you, Harry.
    I 'm afraid this method does not work as expected. 
     
  • segunda-feira, 9 de novembro de 2009 1:40Harry ZhuMSFT, ModeratorMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    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.