ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

winform2

winform2

13.窗体传值


//方式一: 使用公共静态字段传值 双向传值
//静态字段当类创建时 会一直在内存中 存在一个
public static string staticID = "静态字段传值"
//方式二: 使用构造函数传值
//方式三 委托(事件)传值 同时传值多个页面

14.DataGridView

常用属性

//dataGridView1.Rows 所有行的集合 //dataGridView1.Rows[0].Cells 第一行中cell的集合 //dataGridView1.SelectedRows 选中行的集合 //dataGridView1.CurrentRow 选中行的对象 //dataGridView1.CurrentRow.Index 选中行的索引值 //dataGridView1.Rows.RemoveAt 删除某一行 //dataGridView1.SelectAll();/选择所有行 //dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[1]; //dataGridView1.Columns 所有列的集合 //dataGridView1.ClearSelection();去除选择 row.IsNewRow 当前行是否是空白行
//添加一行数据 private void button1_Click(object sender, EventArgs e) { //得到总行数 int num = dataGridView1.Rows.Count; Console.WriteLine(num); //向第一行后插入一行数据 //0代表第一行 1代表插入行的数量 // dataGridView1.Rows.Insert(num-1, 1); dataGridView1.Rows.Add(1); //写第所有行第一列数据//插入显示序号 this.dataGridView1.Rows[num - 1].Cells[0].Value = num; //写第一行第二列数据//插入性别 this.dataGridView1.Rows[num - 1].Cells[1].Value = "aa"; //写第一行第三列数据//插入性别 this.dataGridView1.Rows[num - 1].Cells[2].Value = "bb"; //写第一行第四列数据//插入班级 this.dataGridView1.Rows[num - 1].Cells[3].Value = "cc"; //去除选择 // dataGridView1.ClearSelection(); }
//获取选中行数据 private void button2_Click(object sender, EventArgs e) { //判断是否选中一行 if (dataGridView1.SelectedRows.Count == 0) { Console.WriteLine("没有选中行"); return; } //获取选择箭头指向的行的索引 int index = dataGridView1.CurrentRow.Index; Console.WriteLine(this.dataGridView1.Rows[index].Cells[0].Value); Console.WriteLine(this.dataGridView1.Rows[index].Cells[1].Value); Console.WriteLine(this.dataGridView1.Rows[index].Cells[2].Value); Console.WriteLine(this.dataGridView1.Rows[index].Cells[3].Value); }
//所有行数据 private void button3_Click(object sender, EventArgs e) { for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)//行循环 { for (int j = 0; j < dataGridView1.Columns.Count; j++) //列循环 { Console.WriteLine(dataGridView1.Rows[i].Cells[j].Value.ToString()); } } }
//删除选中行 private void button4_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count == 0) { Console.WriteLine("没有选中行"); return; } //选中的不是空白行 if (!dataGridView1.CurrentRow.IsNewRow) { //删除选中行 this.dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index); } }
//删除多个选中行 private void button5_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count == 0) { Console.WriteLine("没有选中行"); return; } //遍历删除选中行 foreach (DataGridViewRow item in dataGridView1.SelectedRows) { if (!item.IsNewRow) { this.dataGridView1.Rows.Remove(item); } } }
//获取选中单元格的内容 private void button6_Click(object sender, EventArgs e) { Console.WriteLine(dataGridView1.CurrentCell.Value.ToString()); }

15.DataGridView数据源绑定

数据模型类 public class People { public string PeopleName { get; set; } public string PeopleSex { get; set; } //值类型的默认值为 0 导致表格内会默认显示 0 用? 改为 null public int? PeopleAge { get; set; } = null; public float? PeopleHeight { get; set; } = null; }



// 3.当集合中数据改变时 主动刷新 dataGridView1 BindingList<People> elist = new BindingList<People>(); public Form5() { InitializeComponent(); //4.DataSource 数据源 绑定dataGridView数据源集合 dataGridView1.DataSource = elist; } private void button1_Click(object sender, EventArgs e) { //1.准备数据 People zhangsan = new People() { PeopleAge = 18, PeopleHeight = 199, PeopleName = "张三", PeopleSex = "男" }; People lisi = new People() { PeopleAge = 17, PeopleHeight = 191, PeopleName = "李四", PeopleSex = "男" }; People wangwu = new People() { PeopleAge = 10, PeopleHeight = 192, PeopleName = "王五", PeopleSex = "女" }; //2.添加数据到数据源集合中 elist.Add(zhangsan); elist.Add(lisi); elist.Add(wangwu); } //删除第一行 private void button2_Click(object sender, EventArgs e) { if (elist.Count > 0) { elist.RemoveAt(0); } } //删除选中的一行 private void button3_Click(object sender, EventArgs e) { //判断是否选中一行 if (dataGridView1.SelectedRows.Count == 0) return; foreach (DataGridViewRow item in dataGridView1.SelectedRows) { if (!item.IsNewRow) { elist.RemoveAt(dataGridView1.CurrentRow.Index); } } } }
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进