事件与委托更新父窗体数据,简单比较
2020-12-13 02:40
标签:c a tar ext get com 1.委托更新父窗页面。 例如,功能:父窗体A,子窗体B,由A打开B窗体,更新A窗体数据 A窗体代码: public delegate void
reflshPassenger();//声明委托
private void
getPassengers() {
//...dosomething } B窗体代码: A.reflshPassenger reflshpassenger;
//声明A窗体委托 public FZ_Passengers(string _strState,
formSubmitOrder.reflshPassenger
_reflsh) //最后在需要调用的位置,调用即可: if(reflshpassenger!=null) { reflshpassenger() } 2.基于事件: 窗体A代码: B b; 注册事件: B= new
Frm_B(); 实现事件: if
(B.strName !=
"") B窗体代码: 事件声明:
public event EventHandler
eventLookUp;
//在具体的位置实现事件
if (eventLookUp !=
null)
总结,基于事件的实现方法,更简单,效率也高点,后期的维护性也高些!~ 事件与委托更新父窗体数据,简单比较,搜素材,soscw.com 事件与委托更新父窗体数据,简单比较 标签:c a tar ext get com 原文地址:http://www.cnblogs.com/it888/p/3777368.html
private void
btnAddPassenger_Click(object sender, EventArgs
e)//打开B窗体按钮,并把委托窗体给B窗体
{
reflshPassenger reflshData =
getPassengers;
new FZ_Passengers("add",
reflshData).ShowDialog();
}
{
InitializeComponent();
strState =
_strState;
reflshpassenger =
_reflsh;//接受主窗体传递过来的委托
}
B.eventLookUp += new
EventHandler(frm_ValueChanged);//注册事件,要在ShowDialog之前实现
B.ShowDialog();
{
this.lb_Sub.Text =
frm.strName.Trim();
}
else
{
return;
}
public string strName { get; set; }//声明字符串
{
strName =
dgv_DataSource.Rows[e.RowIndex].Cells["userName"].Value.ToString().Trim();
this.eventLookUp(sender,
e);
this.Close();
}