2012-05-17 14 views
6

Merhaba Bir "Sık Kullanılanlar" menüsüne sahip bir ToolStripMenu'm var. Bu, çalışma zamanında WinForms uygulamasında alt öğeleri eklemek istiyorum. "Sık Kullanılanlara Ekle" seçeneğine sahip bir bağlam menüsünü göstermek için sağ tıklattığım bir datagridview var. Bu olay tetiklendiğinde, bu Sık Kullanılanlar menüsüne datagriview'den (zaten bunu nasıl yapacağımı bildiğimden) seçilen satırdan bir metin kullanarak bir öğe eklemek istiyorum. Zor kısmı benim newlyCreatedToolStripMenuItem_Click olayım için kod oluşturmam gerekiyor. Favori listemi daha sonra nasıl kaydedeceğimi belirleyeceğim. SağToolTrip öğelerini RunTime'a ekleme

yeni öğe eklendiğinden ToolStripMenu Sık ContextMenu

gelen "Ekle" Seç "John Smith" için datagridview satırını tıklayın

:

yüzden gidiyoruz "John Smith" yazıyor "

" John Smith "ToopStripMenuItem'un tıklatılması bir eylemi (örneğin, daragridview satırında bu satırı seçmek gibi) tetikler

İyi bir başlangıç ​​fikri var mı?

cevap

12

, ben bu ne istediğinizi tam olarak tahmin:

private void buttonAddFav_Click(object sender, EventArgs e) 
    { 
     ToolStripItem item = new ToolStripMenuItem(); 
     //Name that will apear on the menu 
     item.Text = "Jhon Smith"; 
     //Put in the Name property whatever neccessery to retrive your data on click event 
     item.Name = "GridViewRowID or DataKeyID"; 
     //On-Click event 
     item.Click += new EventHandler(item_Click); 
     //Add the submenu to the parent menu 
     favToolStripMenuItem.DropDownItems.Add(item); 
    } 

    void item_Click(object sender, EventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 
4

Bu oldukça basit. Sadece favori tüm ToolStripMenuItem 'ler için kullanılan bir geri arama yöntemi kurmanız gerekir. Bu yöntemde item.Text veya item.Name özniteliklerini karşılaştırır ve farklı sık kullanılan yöntemleri yürütürsünüz. ben doğru anlamak durumunda

private void FavoriteToolStriptem_Click(object sender, EventArgs e) { 
    ToolStripMenuItem item = sender as ToolStripMenuItem; 
    MessageBox.Show("You clicked on the menu item called " + item.Name + " shown as " + item.Text); 
} 
+0

bu da doğruydu, teşekkürler! – ikathegreat