2010-11-18 16 views
2

C# içinde Windows Forms içinde çalışıyorum. Ben ContextMenu için MenuItem s ekliyorum bir yöntemi var ve aşağıda MenuItem s için olay işleyicileri uygulamaya: Değerleri iletmek için C# içinde menü öğeleri nasıl işlenir

public void Form1_Load() 
{ 
    int index =0; 
    ArrayList ar = new ArrayList(); 
    ContextMenu cm = new ContextMenu(); 
    cm.Name = "Test"; 
    MenuItem mi = new MenuItem("All"); 
    mi.Click += new EventHandler(mi_All); 
} 
private void mi_All(object sender,EventArgs e) 
{ 
    //here I want to access the arraylist and integer specified in above method 
} 

Bu nasıl yapılabilir? Bir olası çözüm, ArrayList ve int'un global değişkenler olarak bildirilmesidir, ancak bunun gibi birçok değişkenim var. Bu yaklaşımı alırsam, formlar elden alınana kadar değişkenler yaşayacaktır. Yani bu işe yaramıyor. Bunu gerçekleştirmenin başka bir yolu var mı?

+0

soru niye dizi listesine erişmek gerekiyor edilir? Ek depolama için menü öğesinin etiket özelliğini kullanmayı düşünün. –

cevap

3

MenuItem, beğendiğiniz özel bilgileri atamak için kullanılabilecek bir Tag özelliğine sahiptir. Bu nedenle, olay işleyicisi çalıştırıldığında erişmeniz gereken her şeyi atayın. Örneğinizde, enu öğesinin tamsayı dizinini atayacaksınız ve ardından olay işleyicisinin içinde, dizin düzeyi Form düzeyi ArrayList alanına dizin olarak kullanacaksınız.

4

Seçeneklerden biri:

mi.Click += delegate (object sender, EventArgs e) { mi_All(sender, e, ar, index); }; 
... 
private void mi_All(object sender, EventArgs e, ArrayList ar, int index) 
{ 
    ... 
} 

Başka:

mi.Tag = new object[] { ar, index }; 
... 
private void mi_All(object sender, EventArgs e) 
{ 
    ArrayList ar = (ArrayList)((object[])((MenuItem)sender).Tag)[0]; 
    int index = (int)((object[])((MenuItem)sender).Tag)[1]; 
    ... 
} 
+0

Erişmek için bunu yapabilirim. Çözüm için teşekkürler. Benzer şekilde, olay işleyicisi yönteminde güncellenecek dizini döndürmek istersem, bunun için herhangi bir yol var. Lütfen bana haber ver. – ASD

İlgili konular