一、單元格內容的操作
// 取得當前單元格內容
Console.WriteLine(DataGridView1.CurrentCell.Value);
// 取得當前單元格的列 Index
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);
// 取得當前單元格的行 Index
Console.WriteLine(DataGridView1.CurrentCell.RowIndex);
另外,使用DataGridView.CurrentCellAddress 屬性(而不是直接訪問單元格)來確定單元格所在的行:
DataGridView.CurrentCellAddress.Y 和列: DataGridView.CurrentCellAddress.X
。這對於避免取消共享行的共享非常有用。
當前的單元格可以通過設定 DataGridView
對象的CurrentCell
來改變。可以通過 CurrentCell
來設定
DataGridView 的激活單元格。將 CurrentCell
設爲Nothing(null)
可以取消激活的單元格
// 設定 (0, 0)
爲當前單元格
DataGridView1.CurrentCell = DataGridView1[0, 0];
在整行選中模式開啓時,你也可以通過 CurrentCell
來設定選定行。
/// <summary>
/// 向下遍歷
/// </summary>
/// <param ></param>
/// <param ></param>
private void button4_Click(object sender, EventArgs e)
...{
int row = this.dataGridView1.CurrentRow.Index + 1;
if (row > this.dataGridView1.RowCount - 1)
row = 0;
this.dataGridView1.CurrentCell = this.dataGridView1[0, row];
}
/// <summary>
/// 向上遍歷
/// </summary>
/// <param ></param>
/// <param ></param>
private void button5_Click(object sender, EventArgs e)
...{
int row = this.dataGridView1.CurrentRow.Index - 1;
if (row < 0)
row = this.dataGridView1.RowCount - 1;
this.dataGridView1.CurrentCell = this.dataGridView1[0, row];
}
*
注意: this.dataGridView
的索引器的參數是:columnIndex, rowIndex
或是 columnName, rowIndex
這與習慣不同。
DataGridView 設定單元格只讀:
1)使用 ReadOnly
屬性
? 如果希望,DataGridView內所有單元格都不可編輯,那麼只要:
// 設置DataGridView1
爲只讀
DataGridView1.ReadOnly = true;此時,用戶的新增行操作和刪除行操作也被屏蔽了。
如果希望,DataGridView內某個單元格不可編輯,那麼只要:
// 設置 DataGridView1 的第2列整列單元格爲只讀
DataGridView1.Columns[1].ReadOnly = true;
// 設置 DataGridView1 的第3行整行單元格爲只讀
DataGridView1.Rows[2].ReadOnly = true;
// 設置 DataGridView1 的[0,0]單元格爲只讀
DataGridView1[0, 0].ReadOnly = true;
*******DataGridView 行頭列頭的單元格
// 改變DataGridView1的第一列列頭內容
DataGridView1.Columns[0].HeaderCell.Value = "第一列";
// 改變DataGridView1的第一行行頭內容
DataGridView1.Rows[0].HeaderCell.Value = "第一行";
// 改變DataGridView1的左上頭部單元內容
DataGridView1.TopLeftHeaderCell.Value = "左上";
//另外你也可以通過 HeaderText 來改變他們的內容。
// 改變DataGridView1的第一列列頭內容
DataGridView1.Columns[0].HeaderText = "第一列";
*********** DataGridView 單元格的ToolTip的設置
DataGridView.ShowCellToolTips = True 的情況下,單元格的 ToolTip
可以表示出來。對於單元格窄小,無法完全顯示的單元格, ToolTip
可以顯示必要的信息。
1)設定單元格的ToolTip內容
// 設定單元格的ToolTip內容
DataGridView1[0, 0].ToolTipText = "該單元格的內容不能修改";
// 設定列頭的單元格的ToolTip內容
DataGridView1.Columns[0].ToolTipText = "該列只能輸入數字";
// 設定行頭的單元格的ToolTip內容
DataGridView1.Rows[0].HeaderCell.ToolTipText = "該行單元格內容不能修改";
2) CellToolTipTextNeeded
事件
在批量的單元格的 ToolTip
設定的時候,一個一個指定那麼設定的效率比較低,這時候可以利用 CellToolTipTextNeeded
事件。當單元格的ToolTipText
變化的時候也會引發該事件。但是,當DataGridView的DataSource被指定且VirualMode=True的時候,該事件不會被引發。
// CellToolTipTextNeeded事件處理方法
private void DataGridView1_CellToolTipTextNeeded(object sender,
DataGridViewCellToolTipTextNeededEventArgs e)
{
e.ToolTipText = e.ColumnIndex.ToString() + ", " + e.RowIndex.ToString();
}
*******DataGridView 的單元格的邊框、網格線樣式的設定
1) DataGridView 的邊框線樣式的設定
DataGridView 的邊框線的樣式是通過 DataGridView.BorderStyle
屬性來設定的。BorderStyle
屬性設定值是一個
BorderStyle 枚舉: FixedSingle(單線,默認)、Fixed3D、None。
2) 單元格的邊框線樣式的設定
單元格的邊框線的樣式是通過 DataGridView.CellBorderStyle
屬性來設定的。CellBorderStyle
屬性設定值是
DataGridViewCellBorderStyle 枚舉。(詳細參見MSDN)
另外,通過 DataGridView.ColumnHeadersBorderStyle
和RowHeadersBorderStyle
屬性可以修改DataGridView
的頭部的單元格邊框線樣式。屬性設定值是 DataGridViewHeaderBorderStyle
枚舉。(詳細參見 MSDN)
3)單元格的邊框顏色的設定
單元格的邊框線的顏色可以通過 DataGridView.GridColor
屬性來設定的。默認是ControlDarkDark
。但是隻有在 CellBorderStyle
被設定爲Single、SingleHorizontal、SingleVertical 的條件下才能改變其邊框線的顏色。同樣,ColumnHeadersBorderStyle
以及RowHeadersBorderStyle
只有在被設定爲Single
時,才能改變顏色。
4)單元格的上下左右的邊框線式樣的單獨設定
CellBorderStyle只能設定單元格全部邊框線的式樣。要單獨改變單元格某一邊邊框式樣的話,需要用到DataGridView.AdvancedCellBorderStyle屬性。如示例:
' 單元格的上邊和左邊線設爲二重線
' 單元格的下邊和右邊線設爲單重線
DataGridView1.AdvancedCellBorderStyle.Top = _
DataGridViewAdvancedCellBorderStyle.InsetDouble
DataGridView1.AdvancedCellBorderStyle.Right = _
DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Bottom = _
DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Left = _
DataGridViewAdvancedCellBorderStyle.InsetDouble
同樣,設定行頭單元格的屬性是:AdvancedRowHeadersBorderStyle,設定列頭單元格屬性是:AdvancedColumnHeadersBorderStyle。
*******DataGridView
單元格表示值的自定義
通過CellFormatting事件,可以自定義單元格的表示值。(比如:值爲Error的時候,單元格被設定爲紅色)
下面的示例:將“Colmn1”列的值改爲大寫。
//CellFormatting 事件處理方法
private void DataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
// 如果單元格是“Column1”列的單元格
if (dgv.Columns[e.ColumnIndex].Name == "Column1" && e.Value is string)
{
// 將單元格值改爲大寫
string str = e.Value.ToString();
e.Value = str.ToUpper();
// 應用該Format,Format完畢。
e.FormattingApplied = true;
}
}
CellFormatting事件的DataGridViewCellFormattingEventArgs對象的Value屬性一開始保存着未被格式化的值。當Value屬性被設定表示用的文本之後,把FormattingApplied屬性做爲True,告知DataGridView文本已經格式化完畢。如果不這樣做的話,DataGridView會根據已經設定的Format,NullValue,DataSourceNullValue,FormatProvider屬性會將Value屬性會被重新格式化一遍。
*******DataGridView 用戶輸入時,單元格輸入值的設定
通過DataGridView.CellParsing
事件可以設定用戶輸入的值。下面的示例:當輸入英文文本內容的時候,立即被改變爲大寫。
//CellParsing 事件處理方法
private void DataGridView1_CellParsing(object sender,
DataGridViewCellParsingEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
//單元格列爲“Column1”時
if (dgv.Columns[e.ColumnIndex].Name == "Column1" &&
e.DesiredType == typeof(string))
{
//將單元格值設爲大寫
e.Value = e.Value.ToString().ToUpper();
//解析完畢
e.ParsingApplied = true;
}
}