DataGirdView从0到进阶学习指南

DataGirdView从0到进阶学习指南 学习路线3大块属性1、属性:长什么样、能不能改、能不能选方法2、方法增、删、查、改、刷新、清空事件3、事件点击、双击、按钮、编辑学习阶段第一阶段先会”显示数据必学属性DataSourceAutoGenerateColumns falseAllowUserToAddRows falseReadOnly trueSelectionMode FullRowSelect必做拖一个 DataGridView用DataTable绑定数据手动加 3~5 列绑定字段效果表格能显示、不乱、不瞎改、点一下选一行。代码只使用DataGridView显示数据不使用数据绑定//禁止用户自己添加行 dataGridView1.AllowUserToAddRows false; //点一下选整行 dataGridView1.SelectionMode DataGridViewSelectionMode.FullRowSelect; //禁止自动生成列 dataGridView1.AutoGenerateColumns false; //只读不能乱改 dataGridView1.ReadOnly true; //禁止多选 dataGridView1.MultiSelect false; //添加列 dataGridView1.Columns.Add(Name,名字); dataGridView1.Columns.Add(Age, 年龄); dataGridView1.Columns.Add(Height, 身高); dataGridView1.Columns.Add(Weight, 体重); //添加行方式1 dataGridView1.Rows.Add(张三, 21, 171, 70); dataGridView1.Rows.Add(李四, 42, 180, 95); dataGridView1.Rows.Add(王五, 17, 164, 60); dataGridView1.Rows.Add(赵六, 53, 175, 75); //添加行方式2 DataGridViewRow dataGridViewRow new DataGridViewRow(); dataGridViewRow.CreateCells(dataGridView1); dataGridViewRow.Cells[0].Value 胜七; dataGridViewRow.Cells[1].Value 31; dataGridViewRow.Cells[2].Value 178; dataGridViewRow.Cells[3].Value 75; dataGridView1.Rows.Add(dataGridViewRow); //在指定位置插入行 dataGridView1.Rows.Insert(0, 王八,35,172,71); //拷贝一行数据再添加(复制行),Clone只克隆行的样式不克隆数据 DataGridViewRow newRow (DataGridViewRow)dataGridView1.Rows[0].Clone(); //复制数据 for (int i 0; i dataGridView1.Rows[0].Cells.Count; i) { newRow.Cells[i].Value dataGridView1.Rows[0].Cells[i].Value; } dataGridView1.Rows.Add(newRow);运行效果采用DataSource绑定数据注意采用数据绑定时AutoGenerateColumns true否则数据显示不出来AutoGenerateColumns false 的意思是不自动生成列你关掉了自动生成又没有手动创建列也没有给列绑定字段→ 所以表格一片空白//禁止用户自己添加行 dataGridView1.AllowUserToAddRows false; //点一下选整行 dataGridView1.SelectionMode DataGridViewSelectionMode.FullRowSelect; //禁止自动生成列 dataGridView1.AutoGenerateColumns true; //只读不能乱改 dataGridView1.ReadOnly true; //禁止多选 dataGridView1.MultiSelect false; //创建表格 DataTable dt1 new DataTable(); //添加列 dt1.Columns.Add(名字,typeof(string)); dt1.Columns.Add(年龄, typeof(int)); dt1.Columns.Add(身高, typeof(double)); dt1.Columns.Add(体重, typeof(double)); //添加行方式1 dt1.Rows.Add(张三,21,171,70); dt1.Rows.Add(李四, 42, 180, 95); dt1.Rows.Add(王五, 17, 164, 60); dt1.Rows.Add(赵六, 53, 175, 75); //添加行方式2 DataRow row1 dt1.NewRow(); row1[名字] 胜七; row1[年龄] 31; row1[身高] 178; row1[体重] 75; dt1.Rows.Add(row1); //添加行方式3 DataRow row2 dt1.NewRow(); row2[0] 刘八; row2[1] 35; row2[2] 172; row2[3] 71; dt1.Rows.Add(row2); //绑定数据源 dataGridView1.DataSource dt1;运行效果第二阶段增、删、查、改增在第一阶段已经介绍过了剩下删、查、改修改数据dataGridView1.Rows.Add(张三, 21, 171, 70); dataGridView1.Rows[0].Cells[0].Value 王八;修改前修改后删除数据private void btnDeleteRow_Click(object sender, EventArgs e) { if(dataGridView1.SelectedRows.Count0) { dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); } }删除前删除后获取数据双击单元格获取相应行的数据private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.RowIndex 0) return; DataGridViewRow row dataGridView1.Rows[e.RowIndex]; string Name row.Cells[Name].Value.ToString(); string Age row.Cells[Age].Value.ToString(); string Height row.Cells[Height].Value.ToString(); string Weight row.Cells[Weight].Value.ToString(); MessageBox.Show($\n姓名{Name}\n年龄{Age}\n身高{Height}\n体重{Weight}); }运行效果第三阶段美化常用列类型美化表格//表头颜色 dataGridView1.ColumnHeadersDefaultCellStyle.BackColor Color.Blue; //隔行变色 dataGridView1.AlternatingRowsDefaultCellStyle.BackColor Color.Lime; //列自动填满窗口 dataGridView1.AutoSizeColumnsMode DataGridViewAutoSizeColumnsMode.Fill; //隐藏左边空列 dataGridView1.RowHeadersVisible false;运行效果注意如果要整个表头都按照样式变化必须将EnableHeadersVisualStylesfalse//表头颜色 dataGridView1.ColumnHeadersDefaultCellStyle.BackColor Color.Blue; //隔行变色 dataGridView1.AlternatingRowsDefaultCellStyle.BackColor Color.Lime; //列自动填满窗口 dataGridView1.AutoSizeColumnsMode DataGridViewAutoSizeColumnsMode.Fill; //隐藏左边空列 dataGridView1.RowHeadersVisible false; dataGridView1.EnableHeadersVisualStyles false;常用列类型按钮列//添加按钮列 DataGridViewButtonColumn buttonColumn new DataGridViewButtonColumn(); buttonColumn.Text 连接PLC; buttonColumn.Name 操作; buttonColumn.UseColumnTextForButtonValue true; dataGridView1.Columns.Add(buttonColumn); private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex dataGridView1.Columns[操作].Index) { MessageBox.Show(连接PLC); } }运行效果复选框列DataGridViewCheckBoxColumn boxColumn new DataGridViewCheckBoxColumn(); boxColumn.HeaderText 启用; boxColumn.Name Enable; boxColumn.Width 80; dataGridView1.Columns.Add(boxColumn); //初始化该列否则值为null for (int i 0; i dataGridView1.Rows.Count; i) { dataGridView1.Rows[i].Cells[Enable].Value false; } //每次勾选就将值取反 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex dataGridView1.Columns[Enable].Index) { dataGridView1.Rows[e.RowIndex].Cells[Enable].Value ! (bool)dataGridView1.Rows[e.RowIndex].Cells[Enable].Value; } }运行效果下拉框列文本框列超链接列图片列带格式输入的文本列数字上下调节列日期时间列进度条列