本帖最后由 server126 于 2010-04-27 16:29:17 编辑

解决方案 »

  1.   

    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);
      

  2.   

    通过XML去配置和架构 可以利用SENDER对象去处理点击事件
      

  3.   


    您的代码我测试是可以,但是...
      我要实现添加多个p001,p002,p003,p004,,,,,等,怎么做?private void aacc(object sender, EventArgs e)
            {
                    MessageBox.Show("您点击了我");
            }
    这里我怎么知道我点击的是 p001还是p002 ,或p003....??
      

  4.   


    其实我的功能主要是想实现  自动加载   插件        
        然后 把  插件 名 添加到Plugis这个菜单里,实现自己的处理程序
      

  5.   


    sender就是你触发的对象。
      

  6.   


    其实我想要的是这个功能
      ,,,我知道使用(ToolMenuItem)Sender).Text可以取到名
    其实我的功能主要是想实现 自动加载 插件  
      然后 把 插件 名 添加到Plugis这个……
    不知道我有没有说明白
    谢谢您们以上几位的回答
      

  7.   


    就是MenuStrip  菜单--Plugins菜单  动态加载  插件名后,列出所有插件名,然后有自己的事件处理体程序,
       不知道我说的对不对
      

  8.   

    答案不是已经有了public ToolStripMenuItem(
    string text, // 名
    Image image, // 图
    EventHandler onClick // 事件处理方法
    )
      

  9.   

    看这里:
    新建一个插件接口: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]
      

  10.   

    请问一下  一般插件会把插件信息放到哪里?是xml 文档里还是app.config里呀?