具有功能的实现方法,这个方法是一个吧数据插入到数据库然后再插入到listview的方法,使用for循环不断的调用这个方法进行插入:
/// <summary> /// 获得Excel的名称和代号 /// </summary> private void GetData(string name, string prefix) { try { //标记资料序号 int num = 0; AMCustomDatumCategoryGroup CDCG = this.advTree.SelectedNode.Tag as AMCustomDatumCategoryGroup; AMDatumCategory datumCategory = new AMDatumCategory(); datumCategory.Name = name; datumCategory.Prefix = prefix; if (CDCG != null) { datumCategory.CDCG_ID = CDCG.CDCG_Id; } //插入数据库,如果Excel表出现重复数据,就跳过这一条数据 try { //获取标识ID datumCategory.DatumCategoryId = ApplicationEx.AdministrationInterface.CreateDatumCategory(this.mCategory, datumCategory); } catch (InvalidDatumCategoryException) { return; } //插入listview ListViewItem item = new ListViewItem(); item.ImageIndex = 0; item.Tag = datumCategory; num++; item.SubItems.Add((num + this.listView.Items.Count + 1).ToString()); item.SubItems.Add(datumCategory.Name); item.SubItems.Add(datumCategory.Prefix); item.SubItems.Add(datumCategory.Disabled ? "禁用" : "启用"); item.SubItems.Add(datumCategory.CDCG_ID.ToString()); if (listView.InvokeRequired) { listView.Invoke(new Action<ListViewItem>(s => { this.listView.Items.Add(s); }), item); } else { this.listView.Items.Add(item); } } catch (Exception ex) { ApplicationEx.ShowErrorMessageBox(ex); } }
以这个方法作为参数进行调用的写法:
/// <summary> /// 接收类的其他参数值的委托,即,需要先写一个和方法签名相同的 ///参数 /// </summary> public delegate void CreateDatumDelegate(string datum,string prefix); //然后就像变量传参一样先设置好参数的类型,就是这个委托的类型 public ImpOrExpDatum(string filePath, CreateDatumDelegate CreateDatumMethod) { this.filePath = filePath; this.CreateDatumMethod = CreateDatumMethod; } //最后是调用这个方法传入参数 this.CreateDatumMethod(workbook.Worksheets[i].Cells[j + 2, 0].StringValue, workbook.Worksheets[i].Cells[j + 2, 1].StringValue);
调用这个方法,将这个方法当做一个参数
ImpOrExpDatum frm = new ImpOrExpDatum(dialog.FileName, GetData);
它的大体流程是将委托的方法作为参数传入一个方法——这个方法带着一个和传入方法的类型一样的参数——这个方法里面有传入方法的传参调用——传入参数给实现的方法,不懂得小伙伴可以参考
http://www.cnblogs.com/xiaofengfeng/archive/2011/12/02/2271732.html
这个里面的代码复制粘贴调试查看代码的走向流程,另外所有的方法都是要返回到最后调用它的那个位置的,不管执行的内容是什么