C# Datagridview完整攻略
0.行列,寬度自適應(yīng),加編號(hào),背景色。
grid.Columns.Add("ID", "ID");
? ? ? ? ? ? grid.Columns["ID"].DisplayIndex = 0;
? ? ? ? ? ? for (int i = 0; i < grid.Rows.Count; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? grid.Rows[i].Cells["ID"].Value = i + 1;
? ? ? ? ? ? }
? ? ? ? ? ? grid.RowHeadersVisible = false;
? ? ? ? ? ? grid.AllowUserToAddRows = false;
? ? ? ? ? ? grid.RowsDefaultCellStyle.Font = new Font("宋體", 8, FontStyle.Regular);
? ? ? ? ? ? grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
? ? ? ? ? ? grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
? ? ? ? ? ? grid.BackgroundColor = Color.CadetBlue;
?
1. DataGridView當(dāng)前的單元格屬性取得、變更
2. DataGridView編輯屬性
3. DataGridView最下面一列新追加行非表示
4. DataGridView判斷當(dāng)前選中行是否為新追加的行
5. DataGridView刪除行可否設(shè)定
6. DataGridView行列不表示和刪除
1.當(dāng)前的單元格屬性取得、變更
[C#]
'當(dāng)前選中單元的值
Console.WriteLine(DataGridView1.CurrentCell.Value)
'當(dāng)前列的Index值
?Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex)
'當(dāng)前單元的行Index值
Console.WriteLine(DataGridView1.CurrentCell.RowIndex)
'將控件中(0, 0)處的值,賦給當(dāng)前單元格.
DataGridView1.CurrentCell =DataGridView1[0, 0]
2.DataGridView編輯屬性
全部單元格編輯屬性
[C#]
'DataGridView1只讀屬性
DataGridView1.ReadOnly = True
指定行列單元格編輯屬性
[C#]
?
DataGridView1.Columns[1]ReadOnly = True
?
DataGridView1.Rows[2].ReadOnly = True
?
DataGridView1[0, 0].ReadOnly = True
根據(jù)條件判斷單元格的編輯屬性
下例中column2的值是True的時(shí)候,Column1設(shè)為可編輯
?[C#]
?
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;
????????????????}
????????????}
????????}
?
?
3.DataGridView最下面一列新追加行非表示
[C#]
?
DataGridView1.AllowUserToAddRows = False
4.判斷當(dāng)前選中行是否為新追加的行
[C#]
if (DataGridView1.CurrentRow.IsNewRow)
{
?????? Console.WriteLine("當(dāng)前行,是新添加的行");
}
?????? else
{
?????? Console.WriteLine("當(dāng)前行,不是新添加的行");
}
5. DataGridView刪除行可否設(shè)定
[C#]
?
DataGridView1.AllowUserToDeleteRows = False
根據(jù)條件判斷當(dāng)前行是否要?jiǎng)h除
[C#]
?
?
代碼
?1?private?void?DataGridView1_UserDeletingRow(object?sender,?DataGridViewRowCancelEventArgs?e)
?2?????????{
?3?
?4?
?5?
?6?????????????if?(MessageBox.Show("確定要?jiǎng)h除嗎?",?"刪除確認(rèn)",?MessageBoxButtons.OKCancel,?MessageBoxIcon.Question).Equals(System.Windows.Forms.DialogResult.OK))
?7?????????????{
?8?
?9?????????????}
10?????????????else
11?????????????{
12?????????????????e.Cancel?=?true;
13?????????????}
14?????????}
?
?
6. DataGridView行列不表示和刪除
行列不表示
[C#]
'DataGridView1的第一列不表示
DataGridView1.Columns[0].Visible = False
'DataGridView1的第一行不表示
DataGridView1.Rows[0].Visible = False
行列表頭部分不表示
[C#]
?
DataGridView1.ColumnHeadersVisible = False
?
DataGridView1.RowHeadersVisible = False
指定行列刪除
[C#]
?
DataGridView1.Columns.Remove("Column1")
?
DataGridView1.Columns.RemoveAt(0)
?
DataGridView1.Rows.RemoveAt(0)
選擇的行列刪除(多行列)
[C#]
'DataGridView1刪除選中的行
foreach (DataGridViewRow r in DataGridView1.SelectedRows)
??????????? {
??????????????? if (!r.IsNewRow)
??????????????? {
??????????????????? DataGridView1.Rows.Remove(r);
??????????????? }
??????????? }
7. DataGridView行列寬度高度設(shè)置為不能編輯
8. DataGridView行高列幅自動(dòng)調(diào)整
9. DataGridView指定行列凍結(jié)
10. DataGridView列順序變更可否設(shè)定
11. DataGridView行復(fù)數(shù)選擇
12. DataGridView選擇的行、列、單元格取得
?
7.?DataGridView行列寬度高度設(shè)置為不能編輯
?[C#]
'DataGridView1的列的寬設(shè)為不能編輯
DataGridView1.AllowUserToResizeColumns = False
'DataGridView1的行的高設(shè)為不能編輯
DataGridView1.AllowUserToResizeRows = False
指定行列寬度高度設(shè)置為不能編輯
[C#]
'DataGridView1指定列寬度設(shè)置為不能編輯
DataGridView1.Columns[0].Resizable = DataGridViewTriState.False
'DataGridView1指定行高度設(shè)置為不能編輯
DataGridView1.Rows[0].Resizable = DataGridViewTriState.False
列幅行高最小值設(shè)定
[C#]
'列幅最小值設(shè)定為100
DataGridView1.Columns[0].MinimumWidth = 100
'行高最小值設(shè)定為50
DataGridView1.Rows[0].MinimumHeight = 50
行列表頭部分行高列幅設(shè)置為不能編輯
[C#]
行列表頭部分行高設(shè)置為不能編輯??
DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
行列表頭部分列幅設(shè)置為能編輯
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing
8.?DataGridView行高列幅自動(dòng)調(diào)整
[C#]
根據(jù)內(nèi)容,列幅自動(dòng)調(diào)整
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
根據(jù)內(nèi)容,行高自動(dòng)調(diào)整
DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
表頭部分行高列幅自動(dòng)調(diào)整
[C#]
'表頭列高自動(dòng)調(diào)整
DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize
'表頭行幅自動(dòng)調(diào)整
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders
指定列自動(dòng)調(diào)整
[C#]
'指定列的列幅自動(dòng)調(diào)整
DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
9.?DataGridView指定行列凍結(jié)
列凍結(jié)(當(dāng)前列以及左側(cè)做所有列)
[C#]
'DataGridView1的左側(cè)2列固定
DataGridView1.Columns[1].Frozen = True
行凍結(jié)(當(dāng)前行以及上部所有行)
[C#]
'DataGridView1的上部2行固定
DataGridView1.Rows[2].Frozen = True
指定單元格凍結(jié)(單元格所在行上部分所有行,列左側(cè)所有列)
[C#]
DataGridView1[0, 0]. Frozen = True
10.?DataGridView列順序變更可否設(shè)定
[C#]
'DataGridView1的列的位置設(shè)定為允許改變
DataGridView1.AllowUserToOrderColumns = True
但是如果列凍結(jié)的情況下,凍結(jié)的部分不能變更到非凍結(jié)的部分。
變更后列位置取得
[C#]
'取得列"Column1"現(xiàn)在的位置
Console.WriteLine(DataGridView1.Columns["Column1"].DisplayIndex)
'列"Column1"移動(dòng)到最前面
DataGridView1.Columns["Column1"].DisplayIndex = 0
11.?DataGridView行復(fù)數(shù)選擇
不可選擇多行
[C#]
'DataGridView1不可選擇多行
DataGridView1.MultiSelect = False
單元格選擇的時(shí)候默認(rèn)為選擇整行
[C#]
'單元格選擇的時(shí)候默認(rèn)為選擇整行
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
12.?DataGridView選擇的行、列、單元格取得
[C#]
'輸出選擇的單元格位置
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);
}
指定行、列、單元格取得
[C#]
'(0, 0)的選中
DataGridView1[0, 0].Selected = True
'Index為1的行選中
DataGridView1.Rows[1].Selected = True
'Index為2的列選中
DataGridView1.Columns[2].Selected = True
13. DataGridView指定單元格是否表示
14. DataGridView表頭部單元格取得
15. DataGridView表頭部單元格文字列設(shè)定
16. DataGridView選擇的部分拷貝至剪貼板
17.DataGridView粘貼
18. DataGridView單元格上ToolTip表示設(shè)定(鼠標(biāo)移動(dòng)到相應(yīng)單元格上時(shí),彈出說(shuō)明信息)
?
13.?DataGridView指定單元格是否表示
[C#]
?
if?(DataGridView1?[2,0].Displayed&&?DataGridView1?[2,0].Visible)
{
????DataGridView1.CurrentCell?=?DataGridView1[2,0];
}
?
14.?DataGridView表頭部單元格取得
[C#]
'DataGridView1第一列表頭改變
DataGridView1.Columns[0].HeaderCell.Value = "第一列"
'DataGridView1第一行表頭改變
DataGridView1.Rows[0].HeaderCell.Value = "第一行"
'DataGridView1左上角單元格值改變
DataGridView1.TopLeftHeaderCell.Value = "左上"
15.?DataGridView表頭部單元格文字列設(shè)定
更改列Header表示文字列
[C#]
'DataGridView1改變第一列頭部單元格文字
DataGridView1.Columns[0].HeaderText = "第一列"
更改行Header表示文字列
[C#]
'DataGridView1行的頭部單元格為序號(hào)
?
for?(int?i?=?0;?i?<?DataGridView1.Rows.Count-1;?i++)
{
????DataGridView1.Rows[i].HeaderCell.Value=i.ToString();
}
?
'行的寬度自動(dòng)調(diào)節(jié)
DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
最左上Header單元格文字列
[C#]
'修改最左上單元格
DataGridView1.TopLeftHeaderCell.Value = "/"
16.?DataGridView選擇的部分拷貝至剪貼板
拷貝模式設(shè)定
[C#]
DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText
選中部分拷貝
[C#]
Clipboard.SetDataObject(DataGridView1.GetClipboardContent())
17.DataGridView粘貼
[C#]
?
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("列數(shù)錯(cuò)誤");
????????}
????????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表示設(shè)定(鼠標(biāo)移動(dòng)到相應(yīng)單元格上時(shí),彈出說(shuō)明信息)
[C#]
指定單元格
DataGridView1[0, 0].ToolTipText = "指定單元格"
指定列
DataGridView1.Columns[0].ToolTipText = "指定列"
指定行
DataGridView1.Rows[0].HeaderCell.ToolTipText = "指定行"
CellToolTipTextNeeded事件,在多個(gè)單元格使用相同的ToolTips的時(shí)候,可以用該事件,下例為顯示當(dāng)前單元格的行號(hào)和列號(hào)
[C#]
'CellToolTipTextNeeded事件
?
private?void?DataGridView1_CellToolTipTextNeeded(object?sender,?DataGridViewCellToolTipTextNeededEventArgs?e)
{
????e.ToolTipText?=?e.RowIndex.ToString()?+?","?+?e.ColumnIndex.ToString();
}
19. DataGridView中的ContextMenuStrip屬性
20. DataGridView指定滾動(dòng)框位置
21. DataGridView手動(dòng)追加列
22. DataGridView全體分界線樣式設(shè)置
23. DataGridView根據(jù)單元格屬性更改顯示內(nèi)容
24. DataGridView新追加行的行高樣式設(shè)置る
25. DataGridView新追加行單元格默認(rèn)值設(shè)置
?
19.?DataGridView中的ContextMenuStrip屬性
[C#]
DataGridView1.ContextMenuStrip = this.ContextMenuStrip1
DataGridView1.Columns[0)].ContextMenuStrip = this.ContextMenuStrip2
DataGridView1.Columns[0].HeaderCell.ContextMenuStrip = this.ContextMenuStrip2
DataGridView1.Rows[0].ContextMenuStrip = this.ContextMenuStrip3
DataGridView1[1, 0].ContextMenuStrip = this.ContextMenuStrip4
也可以用CellContextMenuStripNeeded、RowContextMenuStripNeeded屬性進(jìn)行定義
[C#]
?
?1?private?void?DataGridView1_CellContextMenuStripNeeded(object?sender,?DataGridViewCellContextMenuStripNeededEventArgs?e)
?2?{
?3?????if?(e.RowIndex<0)
?4?????{
?5?????????e.ContextMenuStrip?=?this.contextMenuStrip1;
?6?????}
?7?????else?if?(e.ColumnIndex<0)
?8?????{
?9?????????e.ContextMenuStrip?=?this.contextMenuStrip2;
10?????}
11?}
12?
?
20.?DataGridView指定滾動(dòng)框位置
[C#]
DataGridView1.FirstDisplayedScrollingRowIndex = 0
DataGridView1.FirstDisplayedScrollingColumnIndex = 0
21.?DataGridView手動(dòng)追加列
[C#]
DataGridView1.AutoGenerateColumns = False
DataGridView1.DataSource = BindingSource1
DataGridViewTextBoxColumn textColumn=new DataGridViewTextBoxColumn()
textColumn.DataPropertyName = "Column1"
textColumn.Name = "Column1"
textColumn.HeaderText = "Column1"
DataGridView1.Columns.Add(textColumn)
22.?DataGridView全體分界線樣式設(shè)置
[C#]
DataGridView1.BorderStyle = BorderStyle.Fixed3D
單元格上下左右分界線樣式設(shè)置
[C#]
DataGridView1.AdvancedCellBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.InsetDouble
DataGridView1.AdvancedCellBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.InsetDouble
23.?DataGridView根據(jù)單元格屬性更改顯示內(nèi)容
如下例,當(dāng)該列是字符串時(shí),自動(dòng)轉(zhuǎn)換文字大小寫(xiě)
[C#]
?
if?(DataGridView1.Columns[e.ColumnIndex].Name.Equals("Column1")?&&?e.Value.GetType().Equals("String"))
{
????string?str?=?e.Value.ToString();
????e.Value?=?str.ToUpper();
????e.FormattingApplied?=?true;
}
?
24.?DataGridView新追加行的行高樣式設(shè)置
行高設(shè)置
[C#]
DataGridView1.RowTemplate.Height = 50
DataGridView1.RowTemplate.MinimumHeight = 50
樣式設(shè)置
[C#]
'設(shè)置背景色為黃色
DataGridView1.DefaultCellStyle.BackColor = Color.Yellow
25.?DataGridView新追加行單元格默認(rèn)值設(shè)置
[C#]
?
private?void?DataGridView1_DefaultValuesNeeded(object?sender,?DataGridViewRowEventArgs?e)
{
????e.Row.Cells["Column1"].Value?=?0;
????e.Row.Cells["Column2"].Value?=?"-";
}
?
?
總結(jié)
以上是生活随笔為你收集整理的C# Datagridview完整攻略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WCF配置
- 下一篇: 联信高效的数据传输机制