DataGridView控件用法合集(三)(转载)

转载自:http://blog.sina.com.cn/s/blog_59181ec70100cf6l.html~type=v5_one&label=rela_nextarticle

  1. DataGridView指定单元格是否表示
  2. DataGridView表头部单元格取得
  3. DataGridView表头部单元格文字列设定
  4. DataGridView选择的部分拷贝至剪贴板
  5. DataGridView粘贴
  6. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息)

1.DataGridView指定单元格是否表示

[VB.NET]
If Not DataGridView1(0, 0).Displayed AndAlso DataGridView1(0, 0).Visible Then
DataGridView1.CurrentCell = DataGridView1(0, 0)
End If
[C#]
if (!DataGridView1[0, 0].Displayed && DataGridView1[0, 0].Visible)
{
DataGridView1.CurrentCell = DataGridView1[0, 0];
}

2.DataGridView表头部单元格取得

[VB.NET]
'DataGridView1のはじめの列のテキストを変更する
DataGridView1.Columns(0).HeaderCell.Value = "はじめの列"
'DataGridView1のはじめの行のテキストを変更する
DataGridView1.Rows(0).HeaderCell.Value = "はじめの行"
'DataGridView1の左上隅のセルのテキストを変更する
DataGridView1.TopLeftHeaderCell.Value = "左上"
[C#]
//DataGridView1のはじめの列のテキストを変更する
DataGridView1.Columns[0].HeaderCell.Value = "はじめの列";
//DataGridView1のはじめの行のテキストを変更する
DataGridView1.Rows[0].HeaderCell.Value = "はじめの行";
//DataGridView1の左上隅のセルのテキストを変更する
DataGridView1.TopLeftHeaderCell.Value = "左上";

3.DataGridView表头部单元格文字列设定

更改列Header表示文字列

[VB.NET]
'DataGridView1のはじめの列のテキストを変更する
DataGridView1.Columns(0).HeaderText = "はじめの列"
[C#]
//DataGridView1のはじめの列のテキストを変更する
DataGridView1.Columns[0].HeaderText = "はじめの列";

更改行Header表示文字列

[VB.NET]
'DataGridView1の行ヘッダーに行番号を表示する
Dim i As Integer
For i = 0 To DataGridView1.Rows.Count - 1
DataGridView1.Rows(i).HeaderCell.Value = i.ToString()
Next i
'行ヘッダーの幅を自動調節する
DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
[C#]
//DataGridView1の行ヘッダーに行番号を表示する
for (int i = 0; i < DataGridView1.Rows.Count; i++)
{
DataGridView1.Rows[i].HeaderCell.Value = i.ToString();
}
//行ヘッダーの幅を自動調節する
DataGridView1.AutoResizeRowHeadersWidth (DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);

最左上Header单元格文字列

[VB.NET]
'左上隅のヘッダーセルに"/"と表示する
DataGridView1.TopLeftHeaderCell.Value = "/"
[C#]
//左上隅のヘッダーセルに"/"と表示する
DataGridView1.TopLeftHeaderCell.Value = "/";

4.DataGridView选择的部分拷贝至剪贴板

拷贝模式设定

[VB.NET]
'ヘッダーをコピーしないようにする
DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText
[C#]
//ヘッダーをコピーしないようにする
DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;

选中部分拷贝

[VB.NET]
'選択されたセルをクリップボードにコピーする
Clipboard.SetDataObject(DataGridView1.GetClipboardContent())
[C#]
//選択されたセルをクリップボードにコピーする
Clipboard.SetDataObject(DataGridView1.GetClipboardContent());

5.DataGridView粘贴

[VB.NET]
'現在のセルのある行から下にペーストする
If DataGridView1.CurrentCell Is Nothing Then
Return
End If
Dim insertRowIndex As Integer = DataGridView1.CurrentCell.RowIndex
'クリップボードの内容を取得して、行で分ける
Dim pasteText As String = Clipboard.GetText()
If String.IsNullOrEmpty(pasteText) Then
Return
End If

pasteText = pasteText.Replace(vbCrLf, vbLf)
pasteText = pasteText.Replace(vbCr, vbLf)
pasteText.TrimEnd(New Char() {vbLf})
Dim lines As String() = pasteText.Split(vbLf)
Dim isHeader As Boolean = True

For Each line As String In lines
'列ヘッダーならば飛ばす
If isHeader Then
isHeader = False
Else
'タブで分割
Dim vals As String() = line.Split(ControlChars.Tab)
'列数が合っているか調べる
If vals.Length - 1 <> DataGridView1.ColumnCount Then
Throw New ApplicationException("列数が違います。")
End If
Dim row As DataGridViewRow = DataGridView1.Rows(insertRowIndex)
'ヘッダーを設定
row.HeaderCell.Value = vals(0)
'各セルの値を設定
Dim i As Integer
For i = 0 To row.Cells.Count - 1
row.Cells(i).Value = vals((i + 1))
Next i
'次の行へ
insertRowIndex += 1
End If
Next line
[C#]
//現在のセルのある行から下にペーストする
if (DataGridView1.CurrentCell == null)
return;
int insertRowIndex = DataGridView1.CurrentCell.RowIndex;
//クリップボードの内容を取得して、行で分ける
string pasteText = Clipboard.GetText();
if (string.IsNullOrEmpty(pasteText))
return;
pasteText = pasteText.Replace("\r\n", "\n");
pasteText = pasteText.Replace('\r', '\n');
pasteText.TrimEnd(new char[] { '\n' });
string[] lines = pasteText.Split('\n');
bool isHeader = true;
foreach (string line in lines)
{
//列ヘッダーならば飛ばす
if (isHeader)
{
isHeader = false;
continue;
}
//タブで分割
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; i++)
{
row.Cells[i].Value = vals[i + 1];
}
//次の行へ
insertRowIndex++;
}

6.DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息)

[VB.NET]
'セルに表示するToolTipを設定する
DataGridView1(0, 0).ToolTipText = "このセルは変更できません"
'列ヘッダーに表示するToolTipを設定する
DataGridView1.Columns(0).ToolTipText = "この列には数字を入力できます"
'行ヘッダーに表示するToolTipを設定する
DataGridView1.Rows(0).HeaderCell.ToolTipText = "この行のセルは変更できません"
[C#]
//セルに表示するToolTipを設定する
DataGridView1[0, 0].ToolTipText = "このセルは変更できません";
//列ヘッダーに表示するToolTipを設定する
DataGridView1.Columns[0].ToolTipText = "この列には数字を入力できます";
//行ヘッダーに表示するToolTipを設定する
DataGridView1.Rows[0].HeaderCell.ToolTipText = "この行のセルは変更できません";

CellToolTipTextNeeded事件,在多个单元格使用相同的ToolTips的时候,可以用该事件,下例为显示当前单元格的行号和列号

[VB.NET]
'CellToolTipTextNeededイベントハンドラ
Private Sub DataGridView1_CellToolTipTextNeeded(ByVal sender As Object, ByVal e As DataGridViewCellToolTipTextNeededEventArgs) Handles DataGridView1.CellToolTipTextNeeded
e.ToolTipText = e.ColumnIndex.ToString() + ", " + e.RowIndex.ToString()
End Sub
[C#]
//CellToolTipTextNeededイベントハンドラ
private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
e.ToolTipText = e.ColumnIndex.ToString() + ", " + e.RowIndex.ToString();
}
原文地址:https://www.cnblogs.com/MFxxk/p/1656461.html