zoukankan      html  css  js  c++  java
  • winform:对dataGridView绑定的泛型List<T> 的简单CRUD

     
    1.  创建对象类,为所有成员封装字段,然后重载该类;
    2. 根据已有的对象类(类型参数)创建一个长度可以变化的List数组,并绑定数据源;
    3. 设置dataGridView的column属性:对应四个对象类创建相应列并用Name属性进行绑定;
    4. 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 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 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();
            }

        } 

    对应的界面:

     

    还有就是新增和修改调用的界面的都是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, " ");

    其他列可以用随机数随便搞定,其他的都差不多。 

    最后感谢一下我那个外星人同学,版权归他所有~ 

  • 相关阅读:
    mongoDB
    昆仑会员此打印方式只针对用会员卡结账的消费,放开限制解决方案
    用jdk1.6的pack200和unpack200,对jar文件进行压缩和解压 .pack.gz
    ffmpeg
    关于golang-mod的使用方法
    组件&Props
    元素渲染
    JSX 简介
    React-HelloWorld
    Vue与REACT两个框架的区别和优势对比
  • 原文地址:https://www.cnblogs.com/zeusro/p/3418352.html
Copyright © 2011-2022 走看看