日期:2014-05-18  浏览次数:20721 次

急急急,A窗体调用B窗体的事件
A窗体是由B窗体show出来的,传了一个参数(id),
B窗体是一个datagridview 弄了一个右击可以删除的contextMenuStrip1控件 有个DeleteToolStripMenuItem_Click事件用做删除的,我想在A窗体上调用这个事件。求大侠指点
C# code

//我要调用这个事件 
//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窗体的那个事件
        }



------解决方案--------------------
在A窗体定义一个静态公共的变量
A窗体用ShowDialog
在B窗体ShowDialog下面判断A窗体那个公共静态变量是否改变
然后执行DeleteToolStripMenuItem_Click(null,null);
------解决方案--------------------
Show 的时候,把 Show(this) //this即窗体A 传入。

那么A的公开属性都可以访问。
------解决方案--------------------
用委托比较好
------解决方案--------------------
http://topic.csdn.net/u/20110407/19/c1068d69-7331-4d02-bc0b-f5ba7a5f8dd8.html
------解决方案--------------------
A里定义一个 Action action
dosomething()
{
action();
}

B show A 的时候 A a=new a();
a.action=()=>{DeleteToolStripMenuItem_Click();具体操纵};
引用一下咯
------解决方案--------------------
在Form1中定义一个委托
C# code

public void Form1_Load()
{
public void delegate tempDelegate(object obj);//可以自己定义想要传的参数,如果是对象可以用object
public tempDelegate MyDelegate;
}

------解决方案--------------------
对了,这段可以去掉了。点button17(上面我写错了,写成button7了)直接响应绑定的DeleteToolStripMenuItem_Click了。
C# code
private void button17_Click(object sender, EventArgs e)
        {
            //如何在这里面调用B窗体的那个事件
        }