winform中通过对话框添加完数据后,数据显示到Treeview和datagridview上

在实际运用中,有时需要在对话框中添加数据,添加完成后需要数据立马显示到Treeview控件和datagridview控件上,但又不能重新绑定DataSource时,你需要用到委托,在winform中新建一个类,在类中声名事件的委托类型,在方法前加上delegate即可,如下所示:

  public delegate void AddItemHandler(Object obj);

在对话框窗体中添加声明事件本身(event),如下所示:

 public event AddItemHandler AfterAdded;

在对话窗体处理完添加或修改逻辑后,调用事件,如下所示,obj是你添加或修改后的对象信息

AfterAdded(obj);

主界面在跳转到对话框的时候需要关联事件,UpdateTreeNode是主窗体中处理Treeview和datagridview刷新数据的方法,如下所示:

 private void btn_Click(object sender, EventArgs e)

{

     FormAddObj formAddObj = new FormAddObj();
     formAddObj .AfterAdded += new AddItemHandler(
UpdateTreeNode);
     formAddObj .ShowDialog();

}

TreeNode rootNode = null;//树形节点的根节点,绑定Treeview数据时用到

TreeNode stuNode  = null;//子节点

 private void UpdateTreeNode(Object obj)

{

  Student stu= obj as Student ;//Student 可以替换为你需要的实体类

  stuNode = new TreeNode(stu.name);

  rootNode.Nodes.Add(stuNode) ; //至此Treeview显示新添加数据已完成,

  //显示新添加的datagridview数据 

  DataColumnCollection stuDcc = stuInfo.Columns;

  DataRow row = stunfo.NewRow();
  row["Id"] =stu.Id;
  row["Name"] = stu.Name;
  row["Sex"] = stu.Sex;

  bayInfo.Rows.Add(row);
  datagridview.DataSource = stuInfo;

}

绑定datagridview数据的方式如下:

 DataGridViewTextBoxColumn tbName = new DataGridViewTextBoxColumn();
 tbName.DataPropertyName = "Name";
 tbName.HeaderText = "姓名";
 tbName.Name = "Name";

 DataGridViewTextBoxColumn tbSex= new DataGridViewTextBoxColumn();
 tbSex.DataPropertyName = "Sex";
 tbSex.HeaderText = "性别";
 tbSex.Name = "Sex";

datagridview.Columns.AddRange(tbName, tbSex);
DataTable  stuInfo= new DataTable();
DataColumnCollection stuDcc = stuInfo.Columns;

stuDcc .Add("Id", typeof(int));
stuDcc .Add("Name", typeof(string));
stuDcc .Add("Sex", typeof(string));

DataRow row = null;
IEnumerable<Student> stuList = StudentBLL.QueryStudent();
foreach (Student stu in stuList )
 {
    row = stu Info.NewRow();
    row["Id"] = stu .Id;
    row["Name"] = stu .Name;
    row["Sex"] = stu .Sex;
    stuInfo.Rows.Add(row);
  }

datagridview.DataSource = stuInfo;
datagridview.Columns["Id"].Visible = false;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值