A窗体是由B窗体show出来的,传了一个参数(id),
B窗体是一个datagridview 弄了一个右击可以删除的contextMenuStrip1控件 有个DeleteToolStripMenuItem_Click事件用做删除的,我想在A窗体上调用这个事件。求大侠指点//我要调用这个事件 
//B窗体的事件
private void DeleteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("确认删除该品牌?", "确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
            {
                return;
            }
            ProductMgr productMgr = new ProductMgr();
            int productID = int.Parse(dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString());
            int result = productMgr.DeleteProductInfo(productID);
            if (result > 0)
            {
                MessageBox.Show("删除商品信息成功!");
                dataGridView1.Rows.RemoveAt(dataGridView1.CurrentCell.RowIndex);
                loadProductCategory();
                if (LoadDate.productCategoryDataSet != null && LoadDate.productCategoryDataSet.Tables.Count > 0)
                    dataGridView1.DataSource = LoadDate.productDataSet.Tables[0];
            }
            else
            {
                MessageBox.Show("删除商品信息失败!", TooltipInfo.validatInfo());            }
        }
//我要在A窗体的button。click事件里调用上面的
private void button17_Click(object sender, EventArgs e)
        {
            //如何在这里面调用B窗体的那个事件
        }

解决方案 »

  1.   

    在A窗体定义一个静态公共的变量
    A窗体用ShowDialog
    在B窗体ShowDialog下面判断A窗体那个公共静态变量是否改变
    然后执行DeleteToolStripMenuItem_Click(null,null);
      

  2.   

    Show 的时候,把 Show(this) //this即窗体A 传入。那么A的公开属性都可以访问。 
      

  3.   

    在B里用 this.Owner 访问A 
      

  4.   

    http://topic.csdn.net/u/20110407/19/c1068d69-7331-4d02-bc0b-f5ba7a5f8dd8.html
      

  5.   

    A里定义一个 Action action
    dosomething()
    {
      action();
    }B show A 的时候   A a=new a();
                     a.action=()=>{DeleteToolStripMenuItem_Click();具体操纵};
    引用一下咯
      

  6.   

    在Form1中定义一个委托public void Form1_Load()
    {
    public void delegate tempDelegate(object obj);//可以自己定义想要传的参数,如果是对象可以用object
    public tempDelegate MyDelegate;
    }然后在Form2中定义方法DeleteToolStripMenuItem_Click,和挂载委托public void Form2_Load()
    {
    Form1 form=new Form1();
    Form1.Mydelegate+=new Form1.tempDelegate(DeleteToolStripMenuItem_Click);}
    最后在Form2中需用的时候直接用下面的代码:if(Mydelegate!=null)
    Mydelegate(object);
    随手写的,也是菜鸟,可能跟你想要的不一样,但是用委托大概是如此实现的,自己体会下。
      

  7.   


    // private void DeleteToolStripMenuItem_Click(object sender, EventArgs e)
            public void DeleteToolStripMenuItem_Click(object sender, EventArgs e)//把这个函数改成public
    //在你的A窗体初始化或者load里面挂载
     this.button7.Click += new EventHandler(f2.DeleteToolStripMenuItem_Click);
      

  8.   

    对了,这段可以去掉了。点button17(上面我写错了,写成button7了)直接响应绑定的DeleteToolStripMenuItem_Click了。
    private void button17_Click(object sender, EventArgs e)
            {
                //如何在这里面调用B窗体的那个事件
            }偶也是菜鸟,共同学习,你试试看。
      

  9.   

    public partial class Form1 : Form
        {
            
            public Form1()
            {
                InitializeComponent();
              
            }               private void form1buttonToolStripMenuItem_Click(object sender, EventArgs e)
            {
                MessageBox.Show("Hello Excel!");
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form2 f = new Form2(this.form1buttonToolStripMenuItem);
                f.ShowDialog();
            }
        }
      

  10.   

     public partial class Form2 : Form
        {
            System.Windows.Forms.ToolStripMenuItem but;
            public Form2(System.Windows.Forms.ToolStripMenuItem form1buttonToolStripMenuItem)
            {
                InitializeComponent();
                but = form1buttonToolStripMenuItem;
            }        private void button1_Click(object sender, EventArgs e)
            {
                but.PerformClick();
            }
        }
      

  11.   

    不懂,不过Delphi里面可以通过句柄实现,不知道C#可不可以
      

  12.   

    A中声明一个public的方法,里面调用 DeleteToolStripMenuItem_Click(object sender, EventArgs e) ,里面的两个参数在你的方法里并没有用到;在B里用 this.Owner实例化A,之后调用A里面的public方法,
    之前做过VB的程序,思路应该是这样的,仅供参考!