字段是类内全局变量,
构造方法内初始化字段的值,
在方法内绑定和显示。
1绑定数据源:绑定集合
this.dgvCourseList.DataSource = null;
this.dgvCourseList.DataSource = this.学生list;
this.lable3=this.学生list.Count.ToString(); // 显示数量
是否选择了一行:
if (this.dataGridView2.CurrentRow==null)
{
MessageBox.Show("请选择一行");
return;
}
获取数据,属性:
int i= (int)this.dataGridView2.CurrentRow.Cells["id"].Value;
获取对象:
对象是引用类型,找出来后,你修改它,其它控件的值也会跟着发生改变。
//同步
tb课表 tbc = (from c in this.list课表 where c.id == tb.id select c).First();
tbc.课名 = textBox3.Text;// 当你修改后
dataGridView2.Refresh(); // 同步显示刷新
this.学生list.Where(c => c.id == this.id).First());
// 集合中查找:单个对象 id 等于 需要的 id值 时给左值。
int id值 = (int)this.DGV.CurrentRow.Cells["id"].Value;
TB学生 tb学生=null;
foreach(var item in this.学生list)
{
if(item.id.Equals(id值))
{
tb学生=item;
}
}
作用:是显示实例对象集合中的部分或所有属性。
比如成绩报告单有:姓名,数学,语文,英语,等成绩。这个控件显示所有成员。
每一行都是一个学生对象。 List<学生>
刷新数据 控件显示刷新 this.dgv成绩单.Refresh();
private void btn保存_Click(object sender, EventArgs e)
{
addedCourse.Add(course);
this.dgvCourseList.DataSource = null;//如果不清空,后面不会同步显示新增加的
this.dgvCourseList.DataSource = this.addedCourse;
}
DataGridView
private System.Windows.Forms.DataGridView dgv成绩单;
这个控件拖入主窗体,它的定义在主窗体的 默认构造方法内。
public Form1()
{
InitializeComponent();
}
1 先做个类型 成绩单
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace list_Demo
{
internal class Class_学生
{
public string 名字 { get; set; }
public int 数学 { get; set; }
public int 语文 { get; set; }
public int 英语 { get; set; }
public Class_学生(string c1_名字, int c2_数学, int c3_语文,int c4_英语)
//默认有参构造方法
{
名字 = c1_名字;
数学 = c2_数学;
语文 = c3_语文;
英语 = c4_英语;
}
public void z_自定义方法()
{
}
}
}
2拖入控件
3 在按钮事件里就可以写代码了
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 list_Demo
{
public partial class Form1 : Form
{
List<Class_学生> c1_成绩报告单;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{//加载集合按钮
Class_学生 no001= new Class_学生("维修电工",99, 99, 99);//数学,语文,英语
Class_学生 no003 = new Class_学生("张三", 33,33,33);
Class_学生 no004 = new Class_学生("李四", 44, 44, 44);
Class_学生 no005 = new Class_学生("王五", 55,55,55);
c1_成绩报告单=new List<Class_学生> { no001,no003,no004,no005};
dgv成绩单.DataSource = c1_成绩报告单;
}
}
}
4 我们来看下效果
公有字段是不显示的,所以要注意 public int 数学;
必须是属性才能正常显示;
只显示部分属性:
//禁止自动生成列
this.dgvCourseList.AutoGenerateColumns = false;
属性列可以像数组那样用下标。
添加出数据类型。
有了数据类型后:三角处,点击编辑列。
这个123列名称要一样。不想显示的属性列可以移除掉(2是要显示的属性)
//3显示
list.Add(tb);//数据对象加入集合
dataGridView1.DataSource = list;//绑定集合,用于显示对象
dataGridView1.AutoGenerateColumns = false;//不显示所有列
自动列宽 .AutoResizeColumns();
以某个属性排列 .Sort(new s_升序());
/// <summary>
/// 课程编号升序
/// </summary>
class s_升序 : IComparer<T>
{
public int Compare(T x, T y)
{
return x.数学.CompareTo(y.数学);
}
}