首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

急A窗体调用B窗体的事件解决方案

2012-08-28 
急急急,A窗体调用B窗体的事件A窗体是由B窗体show出来的,传了一个参数(id),B窗体是一个datagridview 弄了一

急急急,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窗体的那个事件        } 

热点排行