2017-06-07 2 views
0

Tout d'abord Merci pour votre temps! J'espère que vous pouvez m'aider =/C# - Menustrip- Vérifiez si Parent existe et obtenez la référence

J'ai un MenuStrip où je veux ajouter des articles dynamiquement. Ce que je veux faire: Si un Part avec exactement le même nom existe déjà, Childs doit être ajouté à ce parent au lieu de créer un nouveau Parent (MenuStripItem) avec le même nom.

Mon code vérifie actuellement si le parent existe déjà (ce qui fonctionne bien) mais le problème est que je ne peux pas obtenir la référence à ce parent -> firstItem = var ne fonctionne pas -> ne peut pas convertir ToolStripItem en ToolStripMenuItem ... et en changeant le "firstItem" à ToolStripItem me donne une erreur parce que je ne peux pas utiliser "firstItem.DropDownItems.Add (withChild);" plus pour ajouter un enfant plus tard ...

 private void AddNewMenuStrips(string [,] NewMenuStripInfo) 
    { 
     ToolStripMenuItem firstItem; 
     bool alreadyexists = false; 
     string someItem = "Settings"; // the parent im looking for 
     var items = menuStrip2.Items.Find(someItem+"ToolStripMenuItem",false); //here it checks if parent already exists. Which Works but i cant get the reference of the parent to "firstItem" 

     foreach (var item in items) 
     { 
      MessageBox.Show("FOUND"+item.Name); 
      firstItem = var; // ERROR cant convert ToolStripItem to ToolStripMenuItem 
      alreadyexists=true;        
     } 

     if (alreadyexists == false) { firstItem = new ToolStripMenuItem(someItem); } 
    } 

MERCI à l'avance!

Répondre

1

ToolStripMenuItem est une classe qui représente les éléments de menu de niveau supérieur et dérive (pas directement) de ToolStripItem.

Par conséquent, pour récupérer l'élément de menu parent, vous pouvez utiliser un casting:

foreach (var item in parents) 
{ 
    MessageBox.Show("FOUND" + item.Name); 
    firstItem = item as ToolStripMenuItem; 
    alreadyexists = true; 
    // break; 
} 
+0

got it! MERCI!!! bonne journée – christian890