目录
1.当前的单元格属性取得、变更
[VB.NET]
Console.WriteLine(DataGridView1.CurrentCell.Value)
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex)
Console.WriteLine(DataGridView1.CurrentCell.RowIndex)
DataGridView1.CurrentCell = DataGridView1(0, 0)
[C#]
Console.WriteLine(DataGridView1.CurrentCell.Value);
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);
Console.WriteLine(DataGridView1.CurrentCell.RowIndex);
DataGridView1.CurrentCell = DataGridView1[0, 0];
2.DataGridView编辑属性
全部单元格编辑属性
[VB.NET]
DataGridView1.ReadOnly = True
[C#]
DataGridView1.ReadOnly = true;
指定行列单元格编辑属性
[VB.NET]
DataGridView1.Columns(1).ReadOnly = True
DataGridView1.Rows(2).ReadOnly = True
DataGridView1(0, 0).ReadOnly = True
[C#]
DataGridView1.Columns[1].ReadOnly = true;
DataGridView1.Rows[2].ReadOnly = true;
DataGridView1[0, 0].ReadOnly = true;
根据条件判断单元格的编辑属性
下例中column2的值是True的时候,Column1设为可编辑
[VB.NET]
Private Sub DataGridView1_CellBeginEdit(ByVal sender As Object, _
ByVal e As DataGridViewCellCancelEventArgs) _
Handles DataGridView1.CellBeginEdit
Dim dgv As DataGridView = CType(sender, DataGridView)
If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _
Not CBool(dgv("Column2", e.RowIndex).Value) Then
e.Cancel = True
End If
End Sub
[C#]
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;
}
}
3.DataGridView最下面一列新追加行非表示
[VB.NET]
DataGridView1.AllowUserToAddRows = False
[C#]
DataGridView1.AllowUserToAddRows = false;
4.判断当前选中行是否为新追加的行
[VB.NET]
If DataGridView1.CurrentRow.IsNewRow Then
Console.WriteLine("现在的单元格所在的行是新的行")
Else
Console.WriteLine("当前单元格所在的行不是新的行。")
End If
[C#]
if (DataGridView1.CurrentRow.IsNewRow)
Console.WriteLine("现在的单元格所在的行是新的行");
else
Console.WriteLine("当前单元格所在的行不是新的行");
5. DataGridView删除行可否设定
[VB.NET]
DataGridView1.AllowUserToDeleteRows = False
[C#]
DataGridView1.AllowUserToDeleteRows = false;
根据条件判断当前行是否要删除
[VB.NET]
Private Sub DataGridView1_UserDeletingRow(ByVal sender As Object, _
ByVal e As DataGridViewRowCancelEventArgs) _
Handles DataGridView1.UserDeletingRow
If MessageBox.Show("要删除这一列吗?", "删除确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question) <> Windows.Forms.DialogResult.OK Then
e.Cancel = True
End If
End Sub
[C#]
private void DataGridView1_UserDeletingRow(
object sender, DataGridViewRowCancelEventArgs e)
{
if (MessageBox.Show("要删除这一列吗?", "删除确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question) != DialogResult.OK)
{
e.Cancel = true;
}
}
6. DataGridView行列不表示和删除
行列不表示
[VB.NET]
DataGridView1.Columns(0).Visible = False
DataGridView1.Rows(0).Visible = False
[C#]
DataGridView1.Columns[0].Visible = false;
DataGridView1.Rows[0].Visible = false;
行列表头部分不表示
[VB.NET]
DataGridView1.ColumnHeadersVisible = False
DataGridView1.RowHeadersVisible = False
[C#]
DataGridView1.ColumnHeadersVisible = false;
DataGridView1.RowHeadersVisible = false;
指定行列删除
[VB.NET]
DataGridView1.Columns.Remove("Column1")
DataGridView1.Columns.RemoveAt(0)
DataGridView1.Rows.RemoveAt(0)
[C#]
DataGridView1.Columns.Remove("Column1");
DataGridView1.Columns.RemoveAt(0);
DataGridView1.Rows.RemoveAt(0);
选择的行列删除(多行列)
[VB.NET]
Dim r As DataGridViewRow
For Each r In DataGridView1.SelectedRows
If Not r.IsNewRow Then
DataGridView1.Rows.Remove(r)
End If
Next r
[C#]
foreach (DataGridViewRow r in DataGridView1.SelectedRows)
{
if (!r.IsNewRow)
{
DataGridView1.Rows.Remove(r);
}
}
欢迎微信技术交流: