急急急,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);//可以自己定义想要传的参数,如果是对象可以用objectpublic tempDelegate MyDelegate;}
[解决办法]
对了,这段可以去掉了。点button17(上面我写错了,写成button7了)直接响应绑定的DeleteToolStripMenuItem_Click了。
- C# code
private void button17_Click(object sender, EventArgs e) { //如何在这里面调用B窗体的那个事件 }