?避免索引DataGridViewRow.Cells集合。访问一个细胞将直接导致其父行成为非共享,实例化一个新的DataGridViewRow。为细胞相关的事件处理程序接收单元属性,你可以用它来操作不会导致行成为非共享细胞事件参数对象。您也可以使用CurrentCellAddress属性来检索,而不用访问细胞直接当前单元的行和列索引。
?避免细胞为基础的选择模式。这些模式导致行成为非共享。相反,将SelectionMode属性设置DataGridViewSelectionMode.FullRowSelect或DataGridViewSelectionMode.FullColumnSelect。
?不处理DataGridViewRowCollection.CollectionChanged或RowStateChanged事件。这些事件会导致行成为非共享。另外,不要叫DataGridViewRowCollection.OnCollectionChanged(CollectionChangeEventArgs)或OnRowStateChanged(智力,DataGridViewRowStateChangedEventArgs)方法,提高了这些事件。
?不访问SelectedCells集合时SelectionMode属性是FullColumnSelect,ColumnHeaderSelect,FullRowSelect或RowHeaderSelect。这会导致所有行成为非共享选择。
?不要调用AreAllCellsSelected(布尔)方法。这种方法可能会导致行成为非共享。
?不要调用SelectAll方法当SelectionMode属性是CellSelect。这会导致所有行成为非共享。
?不要设置只读或选定的一对假时,在其列对应的属性设置为true单元属性。这会导致所有行成为非共享。
?不访问DataGridViewRowCollection.List财产。这会导致所有行成为非共享。
?不要调用Sort方法的Sort(IComparer接口)超载。一个自定义比较排序会导致所有行成为非共享。
附录 A – FAQ
该附录包含的代码示例和片段集中解答了前面散落的常见问题:
不过你仍可以操作一个只读的单元,比如选中它,将其设置为当前单元,但用户不能修改单元的内容。注意,即使单元通过ReadOnly属性设置为只读,仍然可以通过编程的方式修改它,另外ReadOnly也不会影响用户是否可以删除行。
2. 如何让一个单元不可用(disable)?
public class DataGridViewDisableButtonColumn : DataGridViewButtonColumn
{
public DataGridViewDisableButtonColumn()
{
this.CellTemplate = new DataGridViewDisableButtonCell();
}
}
public class DataGridViewDisableButtonCell : DataGridViewButtonCell
{
private bool enabledValue;
public bool Enabled
{
get {
return enabledValue;
}
set {
enabledValue = value;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-50070-43.html
国际多极化全面战争不可能爆发局部冲突在所难免坚决反对可能出现的类似的奇葩解决方式