2014-04-22 2 views
1

Comme je le vois contextmenu a seulement Show(). Mais pas ShowModal().Menu contextuel showmodal

Ce dont j'ai besoin est d'être sûr que l'utilisateur a cliqué sur n'importe quel élément dans le menu. L'utilisateur doit cliquer sur l'un d'entre eux.

Je peux regarder l'événement de clôture avec la propriété d'annulation. Mais même quand je mets annuler à true - winforms permet de sélectionner un autre nœud treeview (menu contextuel pour le nœud d'arbre).

Alors, comment complètement rendre le menu contextuel modal?

Pour l'instant je dois écrire comme ça

void contextMenuTreeView_Closed(object sender, ToolStripDropDownClosedEventArgs e) 
    { 
     if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked) 
      return; 

     if (treeView.SelectedNode != null && treeView.SelectedNode.Tag != null) 
     { 
      if (ChangeCustomerEventHandler != null) 
       ChangeCustomerEventHandler(this, new CustomerTreeNodeEventArgs((Guid)treeView.SelectedNode.Tag)); 
     } 
     else 
     { 
      if (NewCustomerEventHandler != null) 
       NewCustomerEventHandler(this, EventArgs.Empty); 
     } 
    } 

Répondre

0

Vous que vous espérez faire ne pouvez pas afficher les menus standards de manière modale. Ce n'est pas comme ça que fonctionnent les menus.

Si vous souhaitez une sélection modale, affichez une boîte de dialogue modale. Placez les options possibles dans, par exemple, un groupe radio, et autorisez seulement la boîte de dialogue modale à se fermer lorsque l'utilisateur a fait une sélection qui vous satisfait.