Console.WriteLine(DataGridView1.CurrentCell.Value)

'当前列的Index值

Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex)

'当前单元的行Index值

Console.WriteLine(DataGridView1.CurrentCell.RowIndex)

'将控件中(0, 0)处的值,赋给当前单元格.

DataGridView1.CurrentCell =DataGridView1[0, 0]

2.DataGridView 编辑属性

全部单元格编辑属性

'DataGridView1只读属性

DataGridView1.ReadOnly = True

指定行列单元格编辑属性

DataGridView1.Columns[1]ReadOnly = True

DataGridView1.Rows[2].ReadOnly = True

DataGridView1[0, 0].ReadOnly = True

根据条件判断单元格的编辑属性

下例中column2的值是True的时候,Column1设为可编辑

private void DataGridView1_CellBeginEdit( object sender, DataGridViewCellCancelEventArgs e)
{
if ( this .DataGridView1.Columns[e.ColumnIndex].Name.ToString().Equals( " Column2 " ))
{
if (DataGridView1[ " Column2 " , e.RowIndex].Value.ToString().ToLower().Equals( " true " ))
{
DataGridView1[
" Column1 " , e.RowIndex].ReadOnly = false ;
}
else
{
DataGridView1[
" Column1 " , e.RowIndex].ReadOnly = true ;
}
}
}

4. 判断当前选中行是否为新追加的行

if (DataGridView1.CurrentRow.IsNewRow)
{
Console.WriteLine("当前行,是新添加的行");
}
else
{
Console.WriteLine("当前行,不是新添加的行");
}

5. DataGridView 删除行可否设定

DataGridView1.AllowUserToDeleteRows = False

根据条件判断当前行是否要删除

1 private void DataGridView1_UserDeletingRow( object sender, DataGridViewRowCancelEventArgs e)
2 {
3
4
5
6 if (MessageBox.Show( " 确定要删除吗? " , " 删除确认 " , MessageBoxButtons.OKCancel, MessageBoxIcon.Question).Equals(System.Windows.Forms.DialogResult.OK))
7 {
8
9 }
10 else
11 {
12 e.Cancel = true ;
13 }
14 }

DataGridView1.Columns[0].Visible = False

'DataGridView1的第一行不表示

DataGridView1.Rows[0].Visible = False

行列表头部分不表示

DataGridView1.ColumnHeadersVisible = False

DataGridView1.RowHeadersVisible = False

指定行列删除

DataGridView1.Columns.Remove("Column1")

DataGridView1.Columns.RemoveAt(0)

DataGridView1.Rows.RemoveAt(0)

选择的行列删除(多行列)

'DataGridView1删除选中的行

foreach (DataGridViewRow r in DataGridView1.SelectedRows)
{
if (!r.IsNewRow)
{
DataGridView1.Rows.Remove(r);
}
}

<!--[endif]-->

7. DataGridView 行列宽度高度设置为不能编辑

8. DataGridView 行高列幅自动调整

9. DataGridView 指定行列冻结

10. DataGridView 列顺序变更可否设定

11. DataGridView 行复数选择

12. DataGridView 选择的行、列、单元格取得

7. DataGridView 行列宽度高度设置为不能编辑

'DataGridView1 的列的宽设为不能编辑

DataGridView1.AllowUserToResizeColumns = False

'DataGridView1 的行的高设为不能编辑

DataGridView1.AllowUserToResizeRows = False

指定行列宽度高度设置为不能编辑

'DataGridView1 指定列宽度设置为不能编辑

DataGridView1.Columns[0].Resizable = DataGridViewTriState.False

'DataGridView1 指定行高度设置为不能编辑

DataGridView1.Rows[0].Resizable = DataGridViewTriState.False

列幅行高最小值设定

' 列幅最小值设定为 100

DataGridView1.Columns[0].MinimumWidth = 100

' 行高最小值设定为 50

DataGridView1.Rows[0].MinimumHeight = 50

行列表头部分行高列幅设置为不能编辑

行列表头部分行高设置为不能编辑

DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing

行列表头部分列幅设置为能编辑

DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing

8. DataGridView 行高列幅自动调整

根据内容 , 列幅自动调整

DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells

根据内容 , 行高自动调整

DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells

表头部分行高列幅自动调整

' 表头列高自動調整

DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize

' 表头行幅自動調整

DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders

指定列自动调整

' 指定列的列幅自動調整

DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells

9. DataGridView 指定行列冻结

列冻结(当前列以及左侧做所有列)

'DataGridView1 的左側 2 列固定

DataGridView1.Columns[1].Frozen = True

行冻结(当前行以及上部所有行)

'DataGridView1 的上部 2 行固定

DataGridView1.Rows[2].Frozen = True

指定单元格冻结(单元格所在行上部分所有行,列左侧所有列)

DataGridView1[0, 0]. Frozen = True

10. DataGridView 列顺序变更可否设定

'DataGridView1 的列的位置设定为允许改变

DataGridView1.AllowUserToOrderColumns = True

但是如果列冻结的情况下,冻结的部分不能变更到非冻结的部分。

变更后列位置取得

' 取得列 "Column1" 現在的位置

Console.WriteLine(DataGridView1.Columns["Column1"].DisplayIndex)

' "Column1" 移動到最前面

DataGridView1.Columns["Column1"].DisplayIndex = 0

11. DataGridView 行复数选择

不可选择多行

'DataGridView1 不可选择多行

DataGridView1.MultiSelect = False

单元格选择的时候默认为选择整行

' 单元格选择的时候默认为选择整行

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

12. DataGridView 选择的行、列、单元格取得

' 输出选择的单元格位置

Console.WriteLine(" 选择的单元格位置 ")

foreach ( DataGridViewCell c in DataGridView1.SelectedCells)

Console .WriteLine(c.ColumnIndex + "," + c.RowIndex);

' 输出选择的行位置

Console.WriteLine(" 选择的行位置 ")

foreach ( DataGridViewRow r in dgvBeforeStep.SelectedRows)

Console .WriteLine(r.Index);

'' 输出选择的列位置

foreach ( DataGridViewColumn col in dgvBeforeStep.SelectedColumns)

Console .WriteLine(col.Index);

指定行、列、单元格取得

'(0, 0) 的选中

DataGridView1[0, 0].Selected = True

'Index 1 的行选中

DataGridView1.Rows[1].Selected = True

'Index 2 的列选中

DataGridView1.Columns[2].Selected = True

<!--[endif]-->

13. DataGridView 指定单元格是否表示

14. DataGridView 表头部单元格取得

15. DataGridView 表头部单元格文字列设定

16. DataGridView 选择的部分拷贝至剪贴板

17.DataGridView 粘贴

18. DataGridView 单元格上 ToolTip 表示设定 ( 鼠标移动到相应单元格上时,弹出说明信息 )

13. DataGridView 指定单元格是否表示

if (DataGridView1 [ 2 , 0 ].Displayed && DataGridView1 [ 2 , 0 ].Visible)
{
DataGridView1.CurrentCell
= DataGridView1[ 2 , 0 ];
}

14. DataGridView 表头部单元格取得

'DataGridView1 第一列表头改变

DataGridView1.Columns[0].HeaderCell.Value = " 第一列 "

'DataGridView1 第一行表头改变

DataGridView1.Rows[0].HeaderCell.Value = " 第一行 "

'DataGridView1 左上角单元格值改变

DataGridView1.TopLeftHeaderCell.Value = " 左上 "

15. DataGridView 表头部单元格文字列设定

更改列 Header 表示文字列

'DataGridView1 改变第一列头部单元格文字

DataGridView1.Columns[0].HeaderText = " 第一列 "

更改行 Header 表示文字列

'DataGridView1 行的头部单元格为序号

for ( int i = 0 ; i < DataGridView1.Rows.Count - 1 ; i ++ )
{
DataGridView1.Rows[i].HeaderCell.Value
= i.ToString();
}

' 行的宽度自动调节

DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)

最左上 Header 单元格文字列

' 修改最左上单元格

DataGridView1.TopLeftHeaderCell.Value = "/"

16. DataGridView 选择的部分拷贝至剪贴板

拷贝模式设定

DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText

选中部分拷贝

Clipboard.SetDataObject(DataGridView1.GetClipboardContent())

17. DataGridView 粘贴

if (DataGridView1.CurrentCell.Value == null )
{
return ;
}
int insertRowIndex = DataGridView1.CurrentCell.RowIndex;
string pasteText = Clipboard.GetText();
if ( string .IsNullOrEmpty(pasteText))
{
return ;
}
string [] lines = pasteText.Split( ' \r ' );
bool isHeader = true ;
foreach ( string line in lines)
{
if (isHeader)
{
isHeader
= false ;
}
else
{
string [] vals = line.Split( ' \t ' );
if (vals.Length - 1 != DataGridView1.ColumnCount)
{
throw new ApplicationException( " 列数错误 " );
}
DataGridViewRow row
= DataGridView1.Rows[insertRowIndex];
row.HeaderCell.Value
= vals[ 0 ];
for ( int i = 0 ;i < row.Cells.Count - 1 ;i ++ )
{
row.Cells[i].Value
= vals[(i + 1 )];
}
insertRowIndex
+= 1 ;
}
}

18. DataGridView 单元格上ToolTip 表示设定( 鼠标移动到相应单元格上时,弹出说明信息)

指定单元格

DataGridView1[0, 0].ToolTipText = " 指定单元格 "

DataGridView1.Columns[0].ToolTipText = " 指定列 "

DataGridView1.Rows[0].HeaderCell.ToolTipText = " 指定行 "

CellToolTipTextNeeded 事件,在多个单元格使用相同的 ToolTips 的时候,可以用该事件,下例为显示当前单元格的行号和列号

'CellToolTipTextNeeded 事件

private void DataGridView1_CellToolTipTextNeeded( object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
e.ToolTipText
= e.RowIndex.ToString() + " , " + e.ColumnIndex.ToString();
}