- private List<PointInfo> pointInfos = new List<PointInfo>();
- PointInfo PointInfo = new PointInfo();
- private void btn_AddPt_Click(object sender, EventArgs e)
- {
- PointInfo = new PointInfo()
- {
- Name = pointName.Text,
- XPos = Convert.ToDouble(lbl_XAxisPosition.Text),
- YPos = Convert.ToDouble(lbl_YAxisPosition.Text),
- ZPos = Convert.ToDouble(lbl_ZAxisPosition.Text),
- Speed = Convert.ToDouble(textBox2.Text),
- HoldTime = Convert.ToInt32(textBox3.Text),
- };
- pointInfos.Add(PointInfo);
- dataGridView1.DataSource = pointInfos;
- dataGridView1.Refresh();
-
- // 列显示顺序
- dataGridView1.Columns["colName"].DisplayIndex = 0;
- dataGridView1.Columns["colX"].DisplayIndex = 1;
- dataGridView1.Columns["colY"].DisplayIndex = 2;
- dataGridView1.Columns["colZ"].DisplayIndex = 3;
- dataGridView1.Columns["colTime"].DisplayIndex = 4;
- dataGridView1.Columns["colSpeed"].DisplayIndex = 5;
- dataGridView1.Columns["col点位运动"].DisplayIndex = 6;
- dataGridView1.Columns["col直线插补"].DisplayIndex = 7;
- dataGridView1.Columns["col编辑点位"].DisplayIndex = 8;
- dataGridView1.Columns["col删除点位"].DisplayIndex = 9;
- }
复制代码 这里重复添加到第二次dataGridView1.Columns["colName"].DisplayIndex = 0;这里就会报错未引用到对象的实例
把上面创建的泛型list改为Bindlist就可以办理这个问题
List<>只是一个自动调整大小的数组,由给定范例的项目构成,带有几个辅助函数(比方:排序)。它只是数据。
BindingList<>是范例列表或聚集的包装器,它实现了 IBindingList界面。这是支持双向数据绑定(bind)的标准接口(interface)之一。它通过实现 ListChanged 来工作变乱,在添加、删除或设置项目时引发。
- BindingList<T>:
- BindingList<T>是 命名空间下的一个类,通常用于绑定到数据源,比如 DataGridView、ListBox 等。System.ComponentModel
- 它实现了 接口,这意味着它支持数据绑定,并提供了一些额外的功能,比如支持实时更新数据源。IBindingList
- BindingList<T>提供了一些变乱,比如 ,当列表发生变革时会触发这些变乱,可以方便地通知绑定到该列表的控件进行更新。ListChanged
- 与List 相比, 对数据绑定的支持更好,因此在需要绑定到控件的数据源时,通常使用 。BindingList<T>
- 列表<T>:
- List<T>是 命名空间下的一个类,用于表示一样平常的对象聚集。System.Collections.Generic
- 它提供了基本的聚集操纵,比如添加、删除、查找等,但不支持数据绑定。
- List<T>不实现任何特定的接口来支持数据绑定,因此假如你需要将聚集绑定到控件,你需要手动处理数据源的变革,并手动更新控件。
末了建议处理逻辑时用List,但作为数据源绑定是用BindingList.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |