繁体   English   中英

c#如何将事件处理程序添加到foreach循环中的许多菜单?

[英]c# How to add an eventhandler to many menus in a foreach loop?

我正在使用紧凑型框架,并且正在为Windows Mobile标准开发一个应用程序。 我有一个包含电话号码的数组,我想为在该数组中找到的每个电话号码添加一个子菜单。 这些子菜单必须是可单击的,但是我不知道该怎么做。

这是我的代码:

             // "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);
            }

所以我想要一个通用的事件处理程序,但是我不知道如何实现这一点。

希望可以有人帮帮我 :)

提前致谢

调用功能MenuClick时,它会接收到一个被单击MenuItem的对象arg(对象发送者)。

在此功能中具有数字:

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

因为您将其存储在该属性的foreach循环中:

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

设置事件处理程序,使其将电话号码(或您想传递的任何数据)作为事件参数。 您必须派生一个新的基于事件arg的类。

因此,您有一个处理程序,您可以在其中解压缩事件args来查找要处理的项目。

MenuItem的构造函数具有您所追求的( onClick

您可以稍微修改循环代码,以在每个items .Tag属性中添加一些标识符,然后在事件处理程序中,将sender参数转换回MenuItem

高温超导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM