委托:就是方法的指针

=======================================主窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MyDelegate.Stu;
namespace MyDelegate
{
//声明委托(用于显示数据)
public delegate void del_StuShow();
//声明委托(用于添加数据)
public delegate void del_StuAdd(string stuname, int stuage, string stusex);
public partial class ForMain : Form
{
List<Student> stuList = new List<Student>();//声明一个泛型
public ForMain()
{
InitializeComponent();
StuShow();//显示
}
/// <summary>
/// 显示列表
/// </summary>
public void StuShow()
{
ShowList.Items.Clear();
for (int i = 0; i < stuList .Count ; i++)
{
ListViewItem lvi = new ListViewItem(stuList[i].StuName);
lvi.SubItems.Add(stuList[i].StuAge.ToString());
lvi.SubItems.Add(stuList[i].StuSex);
ShowList.Items.Add(lvi);
}
}
/// <summary>
/// 添加列表
/// </summary>
/// <param name="stuname"></param>
/// <param name="stuage"></param>
/// <param name="stusex"></param>
public void StuAdd(string stuname, int stuage, string stusex)
{
Student s = new Student(stuname, stuage, stusex);
stuList.Add(s);
}
/// <summary>
/// 添加数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void butAdd_Click(object sender, EventArgs e)
{
AddStudent stu = new AddStudent();
stu.MyStudent_Show = StuShow;
stu.MyStudent_Add = StuAdd;
stu.ShowDialog();
}
}
}

=======================================添加数据窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MyDelegate
{
public partial class AddStudent : Form
{
public del_StuShow MyStudent_Show { get; set; }
public del_StuAdd MyStudent_Add { get; set; }
public AddStudent()
{
InitializeComponent();
}
private void butAdd_Click(object sender, EventArgs e)
{
MyStudent_Add(txtName.Text, Convert.ToInt32(txtAge.Text), txtSex.Text);
MyStudent_Show();
this.Close();
}
}
}

=======================================Student类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyDelegate.Stu
{
public class Student
{
public Student(string _name,int _age,string _sex)
{
this.StuName = _name;
this.StuAge = _age;
this.StuSex = _sex;
}
public string StuName { set; get; }//姓名
public int StuAge { set; get; }//年龄
public string StuSex { set; get; }//性别
}
}