C# Winform刷新另一窗口
在写程序时有时会遇到新建一个窗口,填写某些 信息后再刷新原窗口。比如再新窗口添加新管理员,点击确定提交后再刷新原始窗口的管理员列表。听起来貌似是很简单,只要再调用一下绑定管理员列表的函数就 可以了,但在新窗口调用那个函数是不行的,但是用传递委托的方法可以,具体原因不明……,请高手赐教。代码如下:
原始窗体:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using PAT.DataAccess; using System.Collections; namespace PAT.WinForm { public partial class RoleManage : Form { public delegate void UpdateComoboxAsyscHandler();//作为异步更新角色列表时用的委托,//最好使用空参数列表,且要定义为//public //更新列表的函数,即上面定义的委托要绑定的函数 private void UpdateComobox() { WinFormControlBuilder.Instance.BindRoles(comboBoxRoles); } private void buttonAddRole_Click(object sender, EventArgs e) { //AddRole是添加新角色的窗口,这里把刚写好的委托传进来 AddRole addRole = new AddRole(new UpdateComoboxAsyscHandler(UpdateComobox)); addRole.Show(); } } }
新窗体:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using PAT.DataAccess; using System.Threading; namespace PAT.WinForm { public partial class AddRole : Form { public AddRole() { InitializeComponent(); } private RoleManage.UpdateComoboxAsyscHandler UpdateComoboxAsyscHandler; //写一个新的构造函数,参数是之前写好的委托 public AddRole(RoleManage.UpdateComoboxAsyscHandler _updateComoboxAsyscHandler) { InitializeComponent(); this.UpdateComoboxAsyscHandler = _updateComoboxAsyscHandler;//委托赋值 } private void buttonSubmit_Click(object sender, EventArgs e) { // //更新数据库操作 // Accunt_Role account_Role = new Accunt_Role(); account_Role.RoleName = textBoxRoleName.Text; patDataContext.Accunt_Roles.InsertOnSubmit(account_Role); patDataContext.SubmitChanges(); UpdateComoboxAsyscHandler();//调用委托,更新原列表 MessageBox.Show("添加角色成功!"); this.Dispose();//关闭窗口 } } }
路在前进的人眼中是没有尽头的!

浙公网安备 33010602011771号