关于 menustrip动态添加 ????????????????????????????????????????

PSSonyXbox 2010-04-27 04:21:05


关于 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
这样的功能怎么实现呀?
谢谢

...全文
270 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmjavajas 2011-05-14
  • 打赏
  • 举报
回复
问题解决了吗?我也遇见了相同的问题
PSSonyXbox 2010-04-28
  • 打赏
  • 举报
回复


请问一下 一般插件会把插件信息放到哪里?是xml 文档里还是app.config里呀?
PSSonyXbox 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 server126 的回复:]
请问一下 一般插件会把插件信息放到哪里?是xml 文档里还是app.config里呀?
[/Quote]

帮忙的都给分
谢谢了
whowhen21 2010-04-27
  • 打赏
  • 举报
回复
看这里:
新建一个插件接口: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 唉
***********************************************************
欢迎使用 CSDN 小秘书
 CSDN 小秘书
***********************************************************
xiehuanxie 2010-04-27
  • 打赏
  • 举报
回复
答案不是已经有了

public ToolStripMenuItem(
string text, // 名
Image image, // 图
EventHandler onClick // 事件处理方法
)
PSSonyXbox 2010-04-27
  • 打赏
  • 举报
回复

就是MenuStrip 菜单--Plugins菜单 动态加载 插件名后,列出所有插件名,然后有自己的事件处理体程序,
不知道我说的对不对
PSSonyXbox 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 server126 的回复:]
引用楼主 server126 的回复:
C# code


关于 menustrip动态添加 ??
Winform窗体中已经有了menustrip1控件,

File Edit Plugins
| | |
open copy ??(这里怎么实现动态添加,和事件)
| |……


其实我的功能主要是想实现 自动加载 插件
然后 把 插件 名 添加到Plugis这个……
[/Quote]

其实我想要的是这个功能
,,,我知道使用(ToolMenuItem)Sender).Text可以取到名


其实我的功能主要是想实现 自动加载 插件
然后 把 插件 名 添加到Plugis这个……


不知道我有没有说明白
谢谢您们以上几位的回答
cja03 2010-04-27
  • 打赏
  • 举报
回复
通过sender
卧_槽 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 server126 的回复:]

引用 2 楼 yuwenge 的回复:
System.Windows.Forms.ToolStripMenuItem ToolMenu_Liang=new System.Windows.Forms.ToolStripMenuItem();
pluginsToolStripMenuItem.DropDownItems.Add(ToolMenu_Liang);
this.ToolMenu_Li……
[/Quote]

sender就是你触发的对象。
PSSonyXbox 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 server126 的回复:]
C# code


关于 menustrip动态添加 ??
Winform窗体中已经有了menustrip1控件,

File Edit Plugins
| | |
open copy ??(这里怎么实现动态添加,和事件)
| |……
[/Quote]

其实我的功能主要是想实现 自动加载 插件
然后 把 插件 名 添加到Plugis这个菜单里,实现自己的处理程序
PSSonyXbox 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yuwenge 的回复:]
System.Windows.Forms.ToolStripMenuItem ToolMenu_Liang=new System.Windows.Forms.ToolStripMenuItem();
pluginsToolStripMenuItem.DropDownItems.Add(ToolMenu_Liang);
this.ToolMenu_Liang.Click += new Syste……
[/Quote]

您的代码我测试是可以,但是...
我要实现添加多个p001,p002,p003,p004,,,,,等,怎么做?

private void aacc(object sender, EventArgs e)
{
MessageBox.Show("您点击了我");
}
这里我怎么知道我点击的是 p001还是p002 ,或p003....??
aaabc 2010-04-27
  • 打赏
  • 举报
回复
通过XML去配置和架构 可以利用SENDER对象去处理点击事件
卧_槽 2010-04-27
  • 打赏
  • 举报
回复
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);
PSSonyXbox 2010-04-27
  • 打赏
  • 举报
回复


求高人帮一帮 谢谢

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧