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選擇的行、列、單元格取得
[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
[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
列凍結(當前列以及左側做所有列)
[C#]
'DataGridView1的左側2列固定
DataGridView1.Columns[1].Frozen = True
行凍結(當前行以及上部所有行)
[C#]
'DataGridView1的上部2行固定
DataGridView1.Rows[2].Frozen = True
指定單元格凍結(單元格所在行上部分所有行,列左側所有列)
[C#]
DataGridView1[0, 0]. Frozen = True
[C#]
'DataGridView1的列的位置設定為允許改變
DataGridView1.AllowUserToOrderColumns = True
但是如果列凍結的情況下,凍結的部分不能變更到非凍結的部分。
變更後列位置取得
[C#]
'取得列"Column1"現在的位置
Console.WriteLine(DataGridView1.Columns["Column1"].DisplayIndex)
'列"Column1"移動到最前面
DataGridView1.Columns["Column1"].DisplayIndex = 0
不可選擇多行
[C#]
'DataGridView1不可選擇多行
DataGridView1.MultiSelect = False
單元格選擇的時候預設為選擇整行
[C#]
'單元格選擇的時候預設為選擇整行
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
[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表頭部單元格文字列設定
16. DataGridView選擇的部分拷貝至剪貼簿
17.DataGridView貼上
18. DataGridView單元格上ToolTip表示設定(滑鼠移動到相應單元格上時,彈出說明資訊)
[C#]
if (DataGridView1 [2,0].Displayed&& DataGridView1 [2,0].Visible)
{
DataGridView1.CurrentCell = DataGridView1[2,0];
}
[C#]
'DataGridView1第一列表頭改變
DataGridView1.Columns[0].HeaderCell.Value = "第一列"
'DataGridView1第一行表頭改變
DataGridView1.Rows[0].HeaderCell.Value = "第一行"
'DataGridView1左上角單元格值改變
DataGridView1.TopLeftHeaderCell.Value = "左上"
更改列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 = "/"
拷貝模式設定
[C#]
DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText
選中部分拷貝
[C#]
Clipboard.SetDataObject(DataGridView1.GetClipboardContent())
[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
也可以用CellContextMenuStripNeeded、RowContextMenuStripNeeded屬性進行定義
[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
[C#]
DataGridView1.FirstDisplayedScrollingRowIndex = 0
DataGridView1.FirstDisplayedScrollingColumnIndex = 0
[C#]
DataGridView1.AutoGenerateColumns = False
DataGridView1.DataSource = BindingSource1
DataGridViewTextBoxColumn textColumn=new DataGridViewTextBoxColumn()
textColumn.DataPropertyName = "Column1"
textColumn.Name = "Column1"
textColumn.HeaderText = "Column1"
DataGridView1.Columns.Add(textColumn)
[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
如下例,當該列是字串時,自動轉換文字大小寫
[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;
}
行高設定
[C#]
DataGridView1.RowTemplate.Height = 50
DataGridView1.RowTemplate.MinimumHeight = 50
樣式設定
[C#]
'設定背景色為黃色
DataGridView1.DefaultCellStyle.BackColor = Color.Yellow
[C#]
private void DataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
e.Row.Cells["Column1"].Value = 0;
e.Row.Cells["Column2"].Value = "-";
}
相關文章
- C# DataGridView自動換行C#View
- C# 從datagridview中匯出到excelC#ViewExcel
- 程式設計師接私活完整攻略程式設計師
- c#之datagridview控制元件(1)_小記C#View控制元件
- 在c#中把oracle表展示在datagridviewC#OracleView
- thinkphp 5.0整合phpsocketio完整攻略,繞坑PHP
- C# dataGridView展示資料庫查詢結果C#View資料庫
- c#中datagridview裡checkbox的使用方法C#View
- C#的DataGridView中自動在行首新增行號C#View
- C# winfrom 中datagridview中checkbox的使用方法C#View
- 靜默方式安裝oracle 11g 完整攻略Oracle
- C#對DataGridView進行新增、修改、刪除資料操作C#View
- C# WinForm 取消DataGridView的預設選中Cell 使其不反藍C#ORMView
- C# ListView用法詳解 很完整C#View
- dataGridView繫結Dictionary |Dictionary繫結到DataGridViewView
- C# 利用Datagridview、BindingNavigator、BindingSource自動顯示資料C#View
- c#之datagridview列表與oracle資料庫的互動測試C#ViewOracle資料庫
- C#操作XML的完整例子——XmlDocument篇C#XML
- 2015版App推廣全攻略(完整版)APP
- datagridView 去重View
- DataGridView with multiple tableView
- c#中如何使用列表datagridview新增修改刪除直接同步到oracleC#ViewOracle
- c# datagridview選中當前單元格及單元格單擊事件C#View事件
- datagridview初始化View
- DataGridView使用 --轉載View
- DataGridView選中整行View
- DataGridView匯出ExcelViewExcel
- [★] VS2005[C#] 操作 Excel 全攻略 ZTC#Excel
- C#將Excel檔案中選擇的內容,複製貼上到 winform datagridviewC#ExcelORMView
- C#中關於DataGridView行和列的背景色-前景色設定C#View
- DataGridView網格顏色View
- WinForm:DataGridView新增加行ORMView
- C#操作Microsoft.Office.Interop.Word類庫完整例子C#ROS
- Winform開發--資料從一個DataGridView轉移到另一個DataGridViewORMView
- c#之combox下列列表框與datagridview及datagridviewtextboxcolumn關聯顯示C#View
- 完整的分頁儲存過程以及c#呼叫方法儲存過程C#
- DataGridView顯示行號-RowPostPaintViewAI
- DataGridView控制元件用法合集View控制元件