2012-02-24 21 views
5

Bir bağlam menüsüne sahip olursam, başka bir menüye katılmak mümkün mü? Yani olsun:Içerik menülerine katılma

Menu 1 Item 1 
    Menu 1 Item 2 
    Menu 1 Item N 
    --------- 
    Menu 2 Item 1 
    Menu 2 Item 2 
    Menu 2 Item N 

en bir not defteri benzeri programın bir örnek verelim. Menülerde, hem düzenleme menüsünde hem de düzenleme kontrolleri bağlam menüsünde (Kes, Kopyala, Yapıştır, Tümünü Seç ...) görünen standart bir araç kümesi olduğundan tekrarlama vardır.

ClipboardTools adlı bir menüye sahip olmak istiyorum; bu, öğelerin bir kereden fazla oluşturulmasına gerek kalmadan, Düzenleme ve kontrol içerik menülerinde görünecektir. Tabii ki bu durumda tekrarlama o kadar da kötü değil, ama 3-4 farklı menülerle ve daha ziyade alt menüler olarak görünen daha büyük menülerle uğraşmak zorundayım.

cevap

5

Evet. Her menuItem ayrı bir kontrol olduğundan, her iki menüye de aynı menuItem ekleyebilirsiniz;

var joinedMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 
    menu1.Items.Add(joinedMenuItem); 
    menu2.Items.Add(joinedMenuItem); 

Aynı şekilde, bir menüden diğer menüye de öğe ekleyebilir;
ToolStripMenu alt öğeleri Öğeler özelliği onu şunlardır: söylemek zamanıdır

menu1.Items.AddRange(menu2.Items); 

.
ToolStripMenuItem alt öğeleri DropDownItems özelliklerinde. Böyle esnek menü sistemi istiyorsanız, Gerçek hayatta

foreach (var item in topMenuItem2.DropDownItems) 
    { 
     topMenuItem1.DropDownItems.Remove(item); 
    } 

, en olası bir: Yani (Dosya ve Edit gibi) iki üst menü öğeleri varsa ve paylaşılan subitems kaldırmak istiyorsanız

Menü öğelerinin toplam listesini oluşturur. Ve belki de kategorilere göre menü Öğeleri alt kümeleri. Ardından, bu listeden menü öğeleri eklenir veya görüntülenen menüye ayarlanır. Örneğin, kullanıcıların menüyü kişiselleştirmelerine veya kendi özel menü bölümlerini oluşturmasına olanak tanıyabilirsiniz. Visual Studio'da yapıldığı gibi.

+0

Bu, öğeleri tek tek eklemek içindir, hepsini kolayca eklemenin bir yolu var mı? – Matt

+0

Cevabı güncellendi. Bu soruyu cevaplıyor mu? Daha fazla örnek verebilirim – MajesticRa

+0

Çok teşekkür ederim. Bu çok açıklıyor. – Matt

İlgili konular