关于 menustrip动态添加 ???????????????????????????????????????? 本帖最后由 server126 于 2010-04-27 16:29:17 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 System.Windows.Forms.ToolStripMenuItem ToolMenu_Liang=new System.Windows.Forms.ToolStripMenuItem();pluginsToolStripMenuItem.DropDownItems.Add(ToolMenu_Liang);this.ToolMenu_Liang.Click += new System.EventHandler(this.ToolMenu_Liang_Click); 通过XML去配置和架构 可以利用SENDER对象去处理点击事件 您的代码我测试是可以,但是... 我要实现添加多个p001,p002,p003,p004,,,,,等,怎么做?private void aacc(object sender, EventArgs e) { MessageBox.Show("您点击了我"); }这里我怎么知道我点击的是 p001还是p002 ,或p003....?? 其实我的功能主要是想实现 自动加载 插件 然后 把 插件 名 添加到Plugis这个菜单里,实现自己的处理程序 sender就是你触发的对象。 其实我想要的是这个功能 ,,,我知道使用(ToolMenuItem)Sender).Text可以取到名其实我的功能主要是想实现 自动加载 插件 然后 把 插件 名 添加到Plugis这个……不知道我有没有说明白谢谢您们以上几位的回答 就是MenuStrip 菜单--Plugins菜单 动态加载 插件名后,列出所有插件名,然后有自己的事件处理体程序, 不知道我说的对不对 答案不是已经有了public ToolStripMenuItem( string text, // 名 Image image, // 图 EventHandler onClick // 事件处理方法) 看这里:新建一个插件接口:IPlugin: public interface IPlugin { string Name { get;set;}//插件显示的名字 void PluginRun();//运行插件干什么 }再实现插件,比如我实现了两个:PluginA,PluginB; 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; } }好了,简单的插件就搞定了吧。o(︶︿︶)o 唉[align=center]*********************************************************** 欢迎使用 CSDN 小秘书 CSDN 小秘书***********************************************************[/align] 请问一下 一般插件会把插件信息放到哪里?是xml 文档里还是app.config里呀? 字段与属性 双击打开窗体老提示文件下载安全警告的弹出框,如图: 请问用asp.net(c#)开发这个网站要多少钱? 保存到数据库不得行!!怎么回事哦, 在线等待,如何在C#客户端程序中向服务器上传文件(图片)?谢谢! DataView中用RowFilter过滤出来的数据集合怎么再转换成一个DataTable? 急,如何将一个十进制文件的转换成为字符串 c# 字符串转数组问题 文件上传的aspx怎么超过4M就不能传了? 大家都能解决的问题! 请教一下这个using的问题 用RequiredFieldValidator限制TextBox里非空
pluginsToolStripMenuItem.DropDownItems.Add(ToolMenu_Liang);
this.ToolMenu_Liang.Click += new System.EventHandler(this.ToolMenu_Liang_Click);
您的代码我测试是可以,但是...
我要实现添加多个p001,p002,p003,p004,,,,,等,怎么做?private void aacc(object sender, EventArgs e)
{
MessageBox.Show("您点击了我");
}
这里我怎么知道我点击的是 p001还是p002 ,或p003....??
其实我的功能主要是想实现 自动加载 插件
然后 把 插件 名 添加到Plugis这个菜单里,实现自己的处理程序
sender就是你触发的对象。
其实我想要的是这个功能
,,,我知道使用(ToolMenuItem)Sender).Text可以取到名
其实我的功能主要是想实现 自动加载 插件
然后 把 插件 名 添加到Plugis这个……不知道我有没有说明白
谢谢您们以上几位的回答
就是MenuStrip 菜单--Plugins菜单 动态加载 插件名后,列出所有插件名,然后有自己的事件处理体程序,
不知道我说的对不对
string text, // 名
Image image, // 图
EventHandler onClick // 事件处理方法
)
新建一个插件接口:IPlugin:
public interface IPlugin
{
string Name { get;set;}//插件显示的名字
void PluginRun();//运行插件干什么
}
再实现插件,比如我实现了两个:PluginA,PluginB;
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;
}
}好了,简单的插件就搞定了吧。o(︶︿︶)o 唉
[align=center]***********************************************************
欢迎使用 CSDN 小秘书
CSDN 小秘书
***********************************************************[/align]