• 动态创建菜单项


    如何从简单到复杂一步步创建menustrip,
    一步步提升程序的抽象程序,努力做到相同的代码从来不写两次
    相同功能的代码不写两次
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection;

    namespace CSLearn
    {
       
    public class CreateMenu
        
    {
            
    public MenuStrip GetMenu()
            
    {
                MenuStrip ms 
    = new MenuStrip();
                ToolStripMenuItem tsmi 
    = new ToolStripMenuItem("file");

                
    //------------------------------------------
                
    //ver1
                
    //  tsmi.Click += new EventHandler(tsmi_Click);

                
    //------------------------------------------
                
    //ver2
                
    //MyCommandDeal test = new MyCommandDeal();
                
    //tsmi.Click += test.DealFileCommadn;


                
    //------------------------------------------
                
    //ver3
                string dealclassname = "CSLearn.MyCommandDeal2";
                
    object obj = Assembly.GetExecutingAssembly().CreateInstance(dealclassname);
                ICommandDeal test 
    = obj as ICommandDeal;
                
    if (test == null)
                
    {
                    MessageBox.Show(
    "动态创建类型失败");
                    
    throw new Exception("传入的类型参数不对,创建类型失败");
                }

                tsmi.Click 
    += test.DealFileCommand;

                ToolStripMenuItem tsmiedit 
    = new ToolStripMenuItem("edit");
                tsmiedit.Click 
    += new EventHandler(tsmiedit_Click);
              
                
                
                ms.Items.AddRange(
    new ToolStripItem[] { tsmi,tsmiedit});
                
    return ms;             
            }

            
    //------------------------------------------
            
    //ver1
            void tsmiedit_Click(object sender, EventArgs e)
            
    {
                MessageBox.Show(
    "use this command to edit a file");
            }


            
    void tsmi_Click(object sender, EventArgs e)
            
    {
                MessageBox.Show(
    "Use this command to crate a menu");
            }

        }


        
    //------------------------------------------
        
    //ver2
        public class MyCommandDeal
        
    {
            
    public void DealFileCommadn(object sender, EventArgs e)
            
    {
                MessageBox.Show(
    "mycommand deal deal with the file command");
            }

        }


        
    //------------------------------------------
        
    //ver3
        public interface ICommandDeal
        
    {
            
    void DealFileCommand(object sender, EventArgs e);
        }


        
    public class MyCommandDeal2:ICommandDeal
        
    {
            
    ICommandDeal 成员
        }
     
    }

  • 相关阅读:
    Asp.net调用百度搜索引擎
    iOS 之 alcatraz (插件管理器)
    @dynamic、@synthesize
    iOS 准备
    iOS 沙盒
    iOS 引导页
    iOS 开发之登陆
    iOS 程序开发
    Java 验证用户名、密码
    数据库操作
  • 原文地址:https://www.cnblogs.com/sunbingzibo/p/961935.html
Copyright © 2020-2023  润新知