设定列头单元格属性是:AdvancedColumnHeadersBorderStyle

时间:2022-01-31 09:05:16

--------------------------------------------------------------------------------
① DataGridView 取得或者改削当前单元格的内容:

当前单元格指的是 DataGridView 焦点地址的单元格,它可以通过 DataGridView 东西的 CurrentCell 属性取得。如果当前单元格不存在的时候,返回Nothing(C#是null)

// 取恰当前单元格内容
Console.WriteLine(DataGridView1.CurrentCell.Value);
// 取恰当前单元格的列 Index
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);
// 取恰当前单元格的行 Index
Console.WriteLine(DataGridView1.CurrentCell.RowIndex);

此外,使用 DataGridView.CurrentCellAddress 属性(而不是直接访谒单元格)来确定单元格地址的
行: DataGridView.CurrentCellAddress.Y
列: DataGridView.CurrentCellAddress.X 。这对付制止打消共享行的共享非常有用。

当前的单元格可以通过设定 DataGridView 东西的 CurrentCell 来转变。可以通过 CurrentCell 来设定
DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 可以打消激活的单元格。
--------------------------------------------------------------------------------

// 设定 (0, 0) 为当前单元格
DataGridView1.CurrentCell = DataGridView1[0, 0];
在整行选中模式开启时,你也可以通过 CurrentCell 来设定选定行。
/// 向下遍历
private void button4_Click(object sender, EventArgs e)
...{
int row = this.dataGridView1.CurrentRow.Index + 1;
if (row > this.dataGridView1.RowCount - 1)
row = 0;
this.dataGridView1.CurrentCell = this.dataGridView1[0, row];
}
/// 向上遍历
private void button5_Click(object sender, EventArgs e)
...{
int row = this.dataGridView1.CurrentRow.Index - 1;
if (row < 0)
row = this.dataGridView1.RowCount - 1;
this.dataGridView1.CurrentCell = this.dataGridView1[0, row];
}
* 注意: this.dataGridView 的索引器的参数是: columnIndex, rowIndex 或是 columnName, rowIndex
这与习惯差别。

--------------------------------------------------------------------------------
② DataGridView 设定单元格只读:

1) 使用 ReadOnly 属性
如果但愿,DataGridView 内所有单元格都不成编纂, 那么只要:

// 设置 DataGridView1 为只读
DataGridView1.ReadOnly = true;此时,用户的新增行操纵和删除行操纵也被屏蔽了。

如果但愿,DataGridView 内某个单元格不成编纂, 那么只要:

// 设置 DataGridView1 的第2列整列单元格为只读
DataGridView1.Columns[1].ReadOnly = true;

// 设置 DataGridView1 的第3行整行单元格为只读
DataGridView1.Rows[2].ReadOnly = true;

// 设置 DataGridView1 的[0,0]单元格为只读
DataGridView1[0, 0].ReadOnly = true;

2) 使用 EditMode 属性
DataGridView.EditMode 属性被设置为 DataGridViewEditMode.EditProgrammatically 时,用户就不能手动编纂单元格的内容了。但是可以通过措施,挪用 DataGridView.BeginEdit 要领,使单元格进入编纂模式进行编纂。

DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;

3) 按照条件设定单元格的不成编纂状态
当一个一个的通过单元格坐标设定单元格 ReadOnly 属性的要领太麻烦的时候,你可以通过 CellBeginEdit 事件来打消单元格的编纂。

// CellBeginEdit 事件措置惩罚惩罚要领
private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
//是否可以进行编纂的条件查抄
if (dgv.Columns[e.ColumnIndex].Name == "Column1" && !(bool)dgv["Column2", e.RowIndex].Value)
{
// 打消编纂
e.Cancel = true;
}
}

--------------------------------------------------------------------------------
③ DataGridView 不显示最下面的新行:

凡是 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 东西的 AllowUserToAddRows 属性设置为 False。

// 设置用户不能手动给 DataGridView1 添加新行
DataGridView1.AllowUserToAddRows = false;
但是,可以通过措施: DataGridViewRowCollection.Add 为 DataGridView 追加新行。

补足: 如果 DataGridView 的 DataSource 绑定的是 DataView, 还可以通过设置 DataView.AllowAdd
属性为 False 来到达同样的效果。
--------------------------------------------------------------------------------
④ DataGridView 判断新增行: