2017-07-19 3 views
-1

J'ai ajouté une barre de menu contextuel 'Affichage' sur ma liste avec certains éléments de menu, tels que Grandes icônes/Petites icônes/Carreaux.C# contextmenustrip n'affiche aucune indication si un élément est sélectionné

Maintenant, chaque fois que je sélectionne l'une des options, l'affichage change, mais le menu n'obtient aucune marque/indication comme cela se produit dans l'explorateur de fichiers Windows, où il montre puce/point contre l'élément de menu sélectionné. Est-ce que quelqu'un peut montrer s'il vous plaît, comment je peux obtenir le point/balle similaire pour mon menu contextuel?

J'ai essayé la propriété CheckOnClick qui m'obtient une coche, mais y a-t-il un autre moyen d'obtenir ce point?

Merci d'avance!

Répondre

0

Je n'ai pas trouvé de moyen d'obtenir des puces/points comme les options d'affichage de Windows File Explored, mais j'ai utilisé la logique ci-dessous et utilisé les états cochés pour indiquer les sélections effectuées.

private void toolStripViewOptions_Click(object sender, EventArgs e) 
{ 
      ToolStripMenuItem selectedOption = sender as ToolStripMenuItem; 

      SetIndicationForSelectedOption(selectedOption); 
} 



private void SetIndicationForSelectedOption(ToolStripMenuItem selectedMenuItem) 
{ 
      ToolStripItemCollection menuItems = (contextMenuStrip.Items[(Int32)toolStripView.Tag] as ToolStripMenuItem).DropDownItems; 

      // Set checked state for only the selected view option and disable same for others. 
      foreach (ToolStripMenuItem item in menuItems) 
      { 
       if (selectedMenuItem == item) 
        selectedMenuItem.Checked = true; 
       else 
        item.Checked = false; 
      } 
} 

Cela a fonctionné pour mon exigence.