1 我动态生成了一个右键菜单 
ContextMenuStrip cms = new ContextMenuStrip();
                cms.Items.Add("111");
                cms.Items.Add("222");
                this.ContextMenuStrip = cms;请问一下 执行的代码写在哪里 2 我程序里面有一个TabControl 里面自动生成了几个自定义控件 
我想在重行加载的时候 清空 里面的东西 用哪个属性方法3 TabControl我每次翻页的时候 重行加载内容 使用的是 Selecting 事件 这样会导致 每次翻页的时候 都重新加载多个选项卡里面的内容 有没有哪个事件是 当哪个选项卡被选中的时候执行的 

解决方案 »

  1.   

    1、你可以动态创建菜单,但是不能动态创建一个事件函数。所以你要先定义函数,然后动态创建时这样:
    ContextMenuStrip.Items["111"].Click+=2、TabControl.Controls.Clear();3、TabControl..::.SelectedIndexChanged 事件 判断当前选是那个
      

  2.   

    ToolStripItem item = new ToolStripMenuItem();                
    item.Name = row[0].ToString();                
    item.Text = row[1].ToString();                
    item.Click += new EventHandler(contextMenuStrip1_ItemClick);                contextMenuStrip1.Items.Add(item);                       
          
    private void contextMenuStrip1_ItemClick(object sender, EventArgs e)        {            
    ToolStripItem item = (ToolStripItem)sender;                        
    MessageBox.Show(item.Name);        
    }
    tabcontrol.controls.clear();
    private void tab_SelectedIndexChanged(object sender, System.EventArgs e)

       switch(this.tab.SelectedIndex) 
       { 
    }
    }
      

  3.   

            public Form1()
            {
                InitializeComponent();            ContextMenuStrip cms = new ContextMenuStrip();
                cms.Items.Add("菜单项名称", null, delegate { MessageBox.Show("点击就触发"); });//如果处理的东西较少,且独立,可以用匿名方法
                cms.Items.Add("发送", null, this.send);//如果这个方法在其它地方也需调用,可写为独立的方法
                this.ContextMenuStrip = cms;
            }        private void send(object sender, EventArgs e)
            {
                MessageBox.Show("你点击了“发送”菜单项。");
            }在菜单项集合中添加一项,名称叫****,图标是****,点击时做****