日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# Datagridview完整攻略

發布時間:2025/3/15 C# 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# Datagridview完整攻略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


0.行列,寬度自適應,加編號,背景色。

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當前的單元格屬性取得、變更

2. DataGridView編輯屬性

3. DataGridView最下面一列新追加行非表示

4. DataGridView判斷當前選中行是否為新追加的行

5. DataGridView刪除行可否設定

6. DataGridView行列不表示和刪除

1.當前的單元格屬性取得、變更

[C#]

'當前選中單元的值

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編輯屬性

全部單元格編輯屬性

[C#]

'DataGridView1只讀屬性

DataGridView1.ReadOnly = True

指定行列單元格編輯屬性

[C#]

?

DataGridView1.Columns[1]ReadOnly = True

?

DataGridView1.Rows[2].ReadOnly = True

?

DataGridView1[0, 0].ReadOnly = True

根據條件判斷單元格的編輯屬性

下例中column2的值是True的時候,Column1設為可編輯

?[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.判斷當前選中行是否為新追加的行

[C#]

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

5. DataGridView刪除行可否設定

[C#]

?

DataGridView1.AllowUserToDeleteRows = False

根據條件判斷當前行是否要刪除

[C#]

?

?

代碼

?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?????????}

?

?

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行列寬度高度設置為不能編輯

8. DataGridView行高列幅自動調整

9. DataGridView指定行列凍結

10. DataGridView列順序變更可否設定

11. DataGridView行復數選擇

12. DataGridView選擇的行、列、單元格取得

?

7.?DataGridView行列寬度高度設置為不能編輯

?[C#]

'DataGridView1的列的寬設為不能編輯

DataGridView1.AllowUserToResizeColumns = False

'DataGridView1的行的高設為不能編輯

DataGridView1.AllowUserToResizeRows = False

指定行列寬度高度設置為不能編輯

[C#]

'DataGridView1指定列寬度設置為不能編輯

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

'DataGridView1指定行高度設置為不能編輯

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

列幅行高最小值設定

[C#]

'列幅最小值設定為100

DataGridView1.Columns[0].MinimumWidth = 100

'行高最小值設定為50

DataGridView1.Rows[0].MinimumHeight = 50

行列表頭部分行高列幅設置為不能編輯

[C#]

行列表頭部分行高設置為不能編輯??

DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing

行列表頭部分列幅設置為能編輯

DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing

8.?DataGridView行高列幅自動調整

[C#]

根據內容,列幅自動調整

DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells

根據內容,行高自動調整

DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells

表頭部分行高列幅自動調整

[C#]

'表頭列高自動調整

DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize

'表頭行幅自動調整

DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders

指定列自動調整

[C#]

'指定列的列幅自動調整

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

9.?DataGridView指定行列凍結

列凍結(當前列以及左側做所有列)

[C#]

'DataGridView1的左側2列固定

DataGridView1.Columns[1].Frozen = True

行凍結(當前行以及上部所有行)

[C#]

'DataGridView1的上部2行固定

DataGridView1.Rows[2].Frozen = True

指定單元格凍結(單元格所在行上部分所有行,列左側所有列)

[C#]

DataGridView1[0, 0]. Frozen = True

10.?DataGridView列順序變更可否設定

[C#]

'DataGridView1的列的位置設定為允許改變

DataGridView1.AllowUserToOrderColumns = True

但是如果列凍結的情況下,凍結的部分不能變更到非凍結的部分。

變更后列位置取得

[C#]

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

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

'"Column1"移動到最前面

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

11.?DataGridView行復數選擇

不可選擇多行

[C#]

'DataGridView1不可選擇多行

DataGridView1.MultiSelect = False

單元格選擇的時候默認為選擇整行

[C#]

'單元格選擇的時候默認為選擇整行

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

'Index1的行選中

DataGridView1.Rows[1].Selected = True

'Index2的列選中

DataGridView1.Columns[2].Selected = True

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

14. DataGridView表頭部單元格取得

15. DataGridView表頭部單元格文字列設定

16. DataGridView選擇的部分拷貝至剪貼板

17.DataGridView粘貼

18. DataGridView單元格上ToolTip表示設定(鼠標移動到相應單元格上時,彈出說明信息)

?

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表頭部單元格文字列設定

更改列Header表示文字列

[C#]

'DataGridView1改變第一列頭部單元格文字

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

更改行Header表示文字列

[C#]

'DataGridView1行的頭部單元格為序號

?

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

?

'行的寬度自動調節

DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)

最左上Header單元格文字列

[C#]

'修改最左上單元格

DataGridView1.TopLeftHeaderCell.Value = "/"

16.?DataGridView選擇的部分拷貝至剪貼板

拷貝模式設定

[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("列數錯誤");
????????}
????????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表示設定(鼠標移動到相應單元格上時,彈出說明信息)

[C#]

指定單元格

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

指定列

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

指定行

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

CellToolTipTextNeeded事件,在多個單元格使用相同的ToolTips的時候,可以用該事件,下例為顯示當前單元格的行號和列號

[C#]

'CellToolTipTextNeeded事件

?

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

19. DataGridView中的ContextMenuStrip屬性

20. DataGridView指定滾動框位置

21. DataGridView手動追加列

22. DataGridView全體分界線樣式設置

23. DataGridView根據單元格屬性更改顯示內容

24. DataGridView新追加行的行高樣式設置る

25. DataGridView新追加行單元格默認值設置

?

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

也可以用CellContextMenuStripNeededRowContextMenuStripNeeded屬性進行定義

[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指定滾動框位置

[C#]

DataGridView1.FirstDisplayedScrollingRowIndex = 0

DataGridView1.FirstDisplayedScrollingColumnIndex = 0

21.?DataGridView手動追加列

[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全體分界線樣式設置

[C#]

DataGridView1.BorderStyle = BorderStyle.Fixed3D

單元格上下左右分界線樣式設置

[C#]

DataGridView1.AdvancedCellBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.InsetDouble

DataGridView1.AdvancedCellBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.Inset

DataGridView1.AdvancedCellBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.Inset

DataGridView1.AdvancedCellBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.InsetDouble

23.?DataGridView根據單元格屬性更改顯示內容

如下例,當該列是字符串時,自動轉換文字大小寫

[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新追加行的行高樣式設置

行高設置

[C#]

DataGridView1.RowTemplate.Height = 50

DataGridView1.RowTemplate.MinimumHeight = 50

樣式設置

[C#]

'設置背景色為黃色

DataGridView1.DefaultCellStyle.BackColor = Color.Yellow

25.?DataGridView新追加行單元格默認值設置

[C#]

?

private?void?DataGridView1_DefaultValuesNeeded(object?sender,?DataGridViewRowEventArgs?e)
{
????e.Row.Cells["Column1"].Value?=?0;
????e.Row.Cells["Column2"].Value?=?"-";
}

?

?

總結

以上是生活随笔為你收集整理的C# Datagridview完整攻略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。