2009-10-05 49 views
1

我正在使用緊湊的框架,我正在製作一個Windows移動標準的應用程序。 我有一個包含phonenumbers的數組,我想添加一個子菜單,我在該數組中找到一個數字。這些子菜單必須是可點擊的,但我無法弄清楚如何去做。c#如何將一個事件處理程序添加到foreach循環中的許多菜單?

這是我的代碼:

   // "menuItemRight" is my main menu 


      // Send a message to the person 
      MenuItem smsMenu = new MenuItem(); 
      smsMenu.Text = "Melding"; 
      menuItemRight.MenuItems.Add(smsMenu); 

    foreach (string Number in aPhoneNumbers) 
      { 
       MenuItem mNumber = new MenuItem(); 

       string sNumber = Number.Trim(); 
       mNumber.Text = sNumber.Trim(); 


       //SMS 
       mSMS.Text = sNumber.Trim(); 
       smsMenu.MenuItems.Add(mSMS); 
       //mNumber.Click += new EventHandler(this.MenuClick); 
      } 

所以,我想要的是一個共同的事件處理程序,但我不知道如何實現這一點。

希望有人能幫助我:)提前

回答

3

當函數MenuClick被稱爲它臨危對象ARG(對象發件人),這是菜單項點擊。

有這功能數量:

string sNumber = ((MenuItem)sender).Text; 
... 

,因爲你保存它在該屬性的foreach循環:

mNumber.Text = sNumber.Trim(); 
... 
1

感謝設置您的事件處理程序,因此它需要的電話號碼(或任何數據要通過對面)作爲事件參數。你將不得不派生一個新的基於事件arg的類。

因此,您有一個處理程序,您可以在其中解開事件參數以找出正在處理的項目。

+0

我有更多的信息,我想一起發送。例如:帶有聯繫信息的字符串。你會如何做到這一點。我當然可以用數字作爲標識來製作一個全球陣列,但我想有一個更好的方法來做到這一點。 – Ikky 2009-10-05 14:27:30

+0

謝謝大家的答案順便說一句。它幫助了很多:) – Ikky 2009-10-05 14:28:03

+0

@ikky - 您的事件參數可以是一個包含您所有信息的結構。你不限於簡單的類型。 – ChrisF 2009-10-05 14:54:50

1

MenuItem的構造函數你是什麼後(onClick

,可以稍微修改循環代碼,把一些標識符到每個項目.Tag屬性,然後在你的事件處理程序,鑄就sender參數回一個MenuItem

HTH

相關問題