- 创建对象类,为所有成员封装字段,然后重载该类;
- 根据已有的对象类(类型参数)创建一个长度可以变化的List数组,并绑定数据源;
- 设置dataGridView的column属性:对应四个对象类创建相应列并用Name属性进行绑定;
- button_onclick事件点击处理;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<Person> L1 = new List<Person>();
private List<Person> L11 = new List<Person>();
public List<Person> L111
{
get { return L11; }
set { L11 = value; }
}
// internal
private void Form1_Load( object sender, EventArgs e)
{
// 学号,姓名,年龄,电话
L111.Add( new Person( " 1 ", " 王尼玛 ", 4, " 466666666666 "));
L111.Add( new Person( " 2 ", " 温尼玛 ", 5, " 4444444 "));
L111.Add( new Person( " 3 ", " 诏尼玛 ", 4, " 4444444444 "));
L111.Add( new Person( " 4 ", " 伦尼玛 ", 4, " 4555555 "));
// this.dataGridView1.DataSource = L1;
LoadData(L111);
}
public void LoadData(List<Person> L1)
{
this.dataGridView1.DataSource = new BindingList<Person>(L1);
}
// Add
private void button2_Click( object sender, EventArgs e)
{
Add a1 = new Add( this);
a1.Show();
}
// 删除
private void button4_Click( object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count <= 0)
{
return;
}
int ind = this.dataGridView1.CurrentRow.Index;
L111.RemoveAt(ind);
LoadData(L111);
}
// 退出
private void button6_Click( object sender, EventArgs e)
{
Application.Exit();
}
// 修改
private void button3_Click( object sender, EventArgs e)
{
// Edit e1 = new Edit(this);
// e1.Show();
Person per = this.dataGridView1.CurrentRow.DataBoundItem as Person;
Add ad = new Add( this, per);
ad.ShowDialog();
;
}
// 刷新
private void button5_Click( object sender, EventArgs e)
{
LoadData(L111);
}
// 查询
private void button1_Click( object sender, EventArgs e)
{
List<Person> L2 = new List<Person>();
// 学号,姓名,年龄,电话
foreach (Person item in L11)
{
if(item.Name.Contains(textBox1.Text))
{
L2.Add(item);
}
}
LoadData(L2);
}
private void textBox1_TextChanged( object sender, EventArgs e)
{
}
}
public Form1()
{
InitializeComponent();
}
List<Person> L1 = new List<Person>();
private List<Person> L11 = new List<Person>();
public List<Person> L111
{
get { return L11; }
set { L11 = value; }
}
// internal
private void Form1_Load( object sender, EventArgs e)
{
// 学号,姓名,年龄,电话
L111.Add( new Person( " 1 ", " 王尼玛 ", 4, " 466666666666 "));
L111.Add( new Person( " 2 ", " 温尼玛 ", 5, " 4444444 "));
L111.Add( new Person( " 3 ", " 诏尼玛 ", 4, " 4444444444 "));
L111.Add( new Person( " 4 ", " 伦尼玛 ", 4, " 4555555 "));
// this.dataGridView1.DataSource = L1;
LoadData(L111);
}
public void LoadData(List<Person> L1)
{
this.dataGridView1.DataSource = new BindingList<Person>(L1);
}
// Add
private void button2_Click( object sender, EventArgs e)
{
Add a1 = new Add( this);
a1.Show();
}
// 删除
private void button4_Click( object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count <= 0)
{
return;
}
int ind = this.dataGridView1.CurrentRow.Index;
L111.RemoveAt(ind);
LoadData(L111);
}
// 退出
private void button6_Click( object sender, EventArgs e)
{
Application.Exit();
}
// 修改
private void button3_Click( object sender, EventArgs e)
{
// Edit e1 = new Edit(this);
// e1.Show();
Person per = this.dataGridView1.CurrentRow.DataBoundItem as Person;
Add ad = new Add( this, per);
ad.ShowDialog();
;
}
// 刷新
private void button5_Click( object sender, EventArgs e)
{
LoadData(L111);
}
// 查询
private void button1_Click( object sender, EventArgs e)
{
List<Person> L2 = new List<Person>();
// 学号,姓名,年龄,电话
foreach (Person item in L11)
{
if(item.Name.Contains(textBox1.Text))
{
L2.Add(item);
}
}
LoadData(L2);
}
private void textBox1_TextChanged( object sender, EventArgs e)
{
}
}
public class Person
{
public Person() { }
public Person( string no, string name, int age, string phone) {
this.No = no;
this.Name = name;
this.Age = age;
this.Phone = phone;
}
// 学号
private string no;
public string No
{
get { return no; }
set { no = value; }
}
// 姓名
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
// 年龄
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
// 电话
private string phone;
public string Phone
{
get { return phone; }
set { phone = value; }
}
}
public Person() { }
public Person( string no, string name, int age, string phone) {
this.No = no;
this.Name = name;
this.Age = age;
this.Phone = phone;
}
// 学号
private string no;
public string No
{
get { return no; }
set { no = value; }
}
// 姓名
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
// 年龄
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
// 电话
private string phone;
public string Phone
{
get { return phone; }
set { phone = value; }
}
}
public
partial
class Add : Form
{
public Add()
{
InitializeComponent();
}
// Add
Form1 f;
public Add(Form1 f)
{
InitializeComponent();
this.f = f;
button1.Text = " Add ";
}
// 学号,姓名,年龄,电话
int index;
// Edit
public Add(Form1 f, Person per)
{
InitializeComponent();
this.f = f;
textBox1.Text = per.No;
textBox2.Text = per.Name;
textBox3.Text = per.Age.ToString();
textBox4.Text = per.Phone;
button1.Text = " Edit ";
index = f.dataGridView1.CurrentRow.Index;
}
private void button1_Click( object sender, EventArgs e)
{
// 非空验证
if (textBox1.Text == string.Empty || textBox2.Text == string.Empty || textBox3.Text == string.Empty || textBox4.Text == string.Empty)
{
MessageBox.Show( " 亲,记得输入数据哦 ");
}
else
{
// 验证学号是否重复
foreach (Person item in f.L111)
{
if (item.No == textBox1.Text)
{
if (button1.Text == " Edit " && item.No != textBox1.Tag.ToString().Trim() || button1.Text == " Add ")
{
MessageBox.Show( " 学号已存在! ");
return;
}
}
}
// 修改数据源并重新绑定到DataGridView
Person p1 = new Person(textBox1.Text.Trim(), textBox2.Text.Trim(), int.Parse(textBox3.Text.Trim()), textBox4.Text.Trim());
if (button1.Text == " Add ")
{
f.L111.Add(p1);
}
else
{
f.L111[index] = p1;
textBox1.Tag = p1.No;
}
f.LoadData(f.L111);
// f.LoadData(L11);
}
}
private void textBox4_TextChanged( object sender, EventArgs e)
{
}
private void Add_Load( object sender, EventArgs e)
{
}
private void textBox1_TextChanged( object sender, EventArgs e)
{
}
private void button2_Click( object sender, EventArgs e)
{
this.Close();
}
{
public Add()
{
InitializeComponent();
}
// Add
Form1 f;
public Add(Form1 f)
{
InitializeComponent();
this.f = f;
button1.Text = " Add ";
}
// 学号,姓名,年龄,电话
int index;
// Edit
public Add(Form1 f, Person per)
{
InitializeComponent();
this.f = f;
textBox1.Text = per.No;
textBox2.Text = per.Name;
textBox3.Text = per.Age.ToString();
textBox4.Text = per.Phone;
button1.Text = " Edit ";
index = f.dataGridView1.CurrentRow.Index;
}
private void button1_Click( object sender, EventArgs e)
{
// 非空验证
if (textBox1.Text == string.Empty || textBox2.Text == string.Empty || textBox3.Text == string.Empty || textBox4.Text == string.Empty)
{
MessageBox.Show( " 亲,记得输入数据哦 ");
}
else
{
// 验证学号是否重复
foreach (Person item in f.L111)
{
if (item.No == textBox1.Text)
{
if (button1.Text == " Edit " && item.No != textBox1.Tag.ToString().Trim() || button1.Text == " Add ")
{
MessageBox.Show( " 学号已存在! ");
return;
}
}
}
// 修改数据源并重新绑定到DataGridView
Person p1 = new Person(textBox1.Text.Trim(), textBox2.Text.Trim(), int.Parse(textBox3.Text.Trim()), textBox4.Text.Trim());
if (button1.Text == " Add ")
{
f.L111.Add(p1);
}
else
{
f.L111[index] = p1;
textBox1.Tag = p1.No;
}
f.LoadData(f.L111);
// f.LoadData(L11);
}
}
private void textBox4_TextChanged( object sender, EventArgs e)
{
}
private void Add_Load( object sender, EventArgs e)
{
}
private void textBox1_TextChanged( object sender, EventArgs e)
{
}
private void button2_Click( object sender, EventArgs e)
{
this.Close();
}
}
对应的界面:
还有就是新增和修改调用的界面的都是Add。所以会看到在Add开头那里有几个重载,然后会根据不同的 button1.Text执行相对应的操作。
还有一种是用winform 对dictionary进行操作。
dataGridView数据绑定是this.dataGridView.DataSource = new BindingList<T>();
还有定义一个数组去储存某一列的值,比如下面这两句:
string content = File.ReadAllText(Application.StartupPath + "//User.txt");
string[] values = Regex.Split(content, "\r\n");
其他列可以用随机数随便搞定,其他的都差不多。
最后感谢一下我那个外星人同学,版权归他所有~