2010-06-21 3 views
2

Dans mon application, j'ai un ToolStripMenu (File, Edit, Notes), une ToolStrip juste au-dessus de mon espace de travail et un menu contextuel pour la zone de travail elle-même. Maintenant, le ToolStripMenu Notes, le ToolStrip et le ContextMenuStrip ont tous le même contenu qui effectue les mêmes actions. Je me demandais, est-ce qu'il y a une manière élégante de concevoir simplement le ToolStripMenu et d'avoir les deux autres "miroirs" c'est la fonction et le contenu au lieu de réécrire tout 3 fois? J'ai vu que tous les 3 contrôles utilisent ToolStripItems et ToolStripItemCollections et en tant que tel, je pense que ce serait assez facile à faire, mais les propriétés sont principalement en lecture seule, et si j'essaie de faire défiler un élément pour les ajouter à l'autre, supprimé du propriétaire initial et il n'existe aucune méthode Clone pour ToolStripItems.Réutiliser un ToolStripMenu pour un ToolStrip ou un ContextMenuStrip?

Merci.

Répondre

1

Créer une méthode qui réutilise vos articles, actions, etc ...

public MainForm() 
{ 
    //in your constructor, create all your common methods, actions, etc and save them to private vars 

    //Then in your form: 
    ToolStripMenu menu = new ToolStripMenu(); 
    AttachCommonFunctionality(menu); 
    Items.Add(menu); 

    ContextMenuStrip rightClick = new ContextMenuStrip(); 
    AttachCommonFunctionality(rightClick); 
    this.ContextMenu = rightClick; 
    //etc... 
} 

private void AttachCommonFuntionality(Control c) 
{ 
    c.Items.Add(_item1); 
    c.Items.Add(_item2); 
    //etc... 

    c.OnClick += _myCommonAction; 
    //etc... 
} 
+0

Je suppose que je vais devoir le faire de cette façon, merci. –

Questions connexes