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();
}