e.Row.Cells["Region"].Value = "NA";
e.Row.Cells["Country"].Value = "USA";
e.Row.Cells["CustomerID"].Value = NewCustomerId();
}
4.1.3.3 Rows集合与新行的关系
新行包含在DataGridView控件的Rows集合中,又因其总是处于最后一行,下面这行代码会返回新行:
DataGridViewRow row = dataGridView1.Rows[dataGridView1.Rows.Count - 1];
尽管新行也包含在Rows集合中,它与Rows集合中其它行的行为却不相同,表现在两点:
不能以编程的方式将新行从Rows集合中移除,如果你尝试这么做,会抛出InvalidOperationException类型的异常。用户也不能删除新行。DataGridViewRowCollection.Clear()方法也不能将新行从Rows集合中移除。
不能在新行之后添加行。如果你尝试这么做,会抛出InvalidOperationException 类型的异常。这种特性的结果是,新行总处于DataGridView的最后一行。当新行显示的时候,DataGridViewRowCollection 类中用于添加行的方法-Add,AddCopy以及AddCopies-在内部都调用用于插入的方法。
4.1.3.4 在新行中输入数据
用户开始在新行输入数据之前,新行的IsNewRow属性为true;一旦用户开始输入,这一行就不再是新行了,DataGridView中会产生一个“新”的新行,看下面:
在添加“新”的新行时,会触发UserAddedRow事件,它的事件处理函数的第二个参数有属性Row,指定了这个“新”的新行。如果用户此时按下Escape键,“新”的新行会被移除,这会触发UserDeletingRow事件,它的事件处理函数的第二个参数的属性Row指定了“新”的新行。
4.1.3.5 自定义新行的可视化效果
新行是基于RowTemplate模板创建的,如果没有指定它的单元的样式,它们会采用继承的样式。要了解样式继承的更多信息,请参看第五章第一节的内容。
新行中单元的初始是由每个单元的DefaultNewRowValue属性决定的。对于DataGridViewImageCell类型的单元,其初始为一个占位图片,其它类型的则为null。你可以重写这个属性以返回自定义。但也可以在DefaultValuesNeeded事件处理函数中对默认进行替换,该事件在焦点进入新行时触发。
新行标题的标准图标是箭头或者星号,并没有得到暴露。如果你要自定义这个图标,就需要创建一个自定义的DataGridViewRowHeaderCell 类。
新行的标题的标准图标使用标题单元DataGridViewCellStyle的ForeColor属性。注意:如果没有足够的空间,图标就不会再显示。
如果为标题单元设置了字符串(通过Value属性),但没有足够的控件同时显示文本和图标,那么图标会被首先截掉。
4.1.3.6 新行的排序
在非绑定模式下,新行总是添加在DataGridView的最后一行,即使已经对数据排序。用户需要在添加新行后再次进行排序,以将新记录放在合适的位置;这种行为方式类于ListView控件。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-50070-23.html
胡扯