110,571
社区成员
发帖
与我相关
我的任务
分享
关于 menustrip动态添加 ??
Winform窗体中已经有了menustrip1控件,
File Edit Plugins
| | |
open copy ??(这里怎么实现动态添加,和事件)
| |
Save del
添加:
private void button4_Click(object sender, EventArgs e)
{
this.pluginsToolStripMenuItem.DropDownItems.Add("Liang", null, new EventHandler(aacc));
}
private void aacc(object sender, EventArgs e)
{
MessageBox.Show("您点击了我");
}
问题是:
我现在可以实现动态添加,就是实现不了动态添加后的点击事件处理程序
比如:
Plugins
|
P001(当点击"p001"的时候怎么才能知道我点击的是"p001"
|
P002 (p002
这样的功能怎么实现呀?
谢谢
public interface IPlugin
{
string Name { get;set;}//插件显示的名字
void PluginRun();//运行插件干什么
}
class PluginA : IPlugin
{
public string Name
{
get { return "PluginA"; }
set { ;}
}
public void PluginRun()
{
MessageBox.Show("你运行的插件是:" + this.Name);
}
}
class PluginB : IPlugin
{
public string Name
{
get { return "PluginB"; }
set { ;}
}
public void PluginRun()
{
MessageBox.Show("你运行的插件是:" + this.Name);
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
foreach (IPlugin p in GetPlugins())//加载插件
{
ToolStripItem item = toolItemPlugins.DropDownItems.Add(p.Name);//toolItemPlugins是菜单
item.Tag = p;
item.Click += new EventHandler(item_Click);
}
}
void item_Click(object sender, EventArgs e)
{
ToolStripItem item = sender as ToolStripItem;
(item.Tag as IPlugin).PluginRun();
}
public List<IPlugin> GetPlugins()//获取插件
{
List<IPlugin> list = new List<IPlugin>();
list.Add(new PluginA());
list.Add(new PluginB());
return list;
}
}