DataGridView控件用法合集

DataGridView控件用法合集

 

1. DataGridView当前的单元格属性取得、变更

2. DataGridView编辑属性

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

4. DataGridView判断当前选中行是否为新追加的行

5. DataGridView删除行可否设定

6. DataGridView行列不表示和删除

7. DataGridView行列宽度高度设置为不能编辑

8. DataGridView行高列幅自动调整

9. DataGridView指定行列冻结

10. DataGridView列顺序变更可否设定

11. DataGridView行复数选择

12. DataGridView选择的行、列、单元格取得

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

14. DataGridView表头部单元格取得

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

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

17. DataGridView粘贴

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

19. DataGridView中的ContextMenuStrip属性

20. DataGridView指定滚动框位置

21. DataGridView手动追加列

22. DataGridView全体分界线样式设置

23. DataGridView根据单元格属性更改显示内容

24. DataGridView新追加行的行高样式设置る

25. DataGridView新追加行单元格默认值设置

26. DataGridView单元格数据错误标签表示

27. DataGridView单元格内输入值正确性判断

28. DataGridView单元格输入错误值事件的捕获

29. DataGridView行排序(点击列表头自动排序的设置)

30. DataGridView自动行排序(新追加值也会自动排序)

31. DataGridView自动行排序禁止情况下的排序

32. DataGridView指定列指定排序

33. DataGridView单元格样式设置

34. DataGridView文字表示位置的设定

35. DataGridView单元格内文字列换行

36. DataGridView单元格DBNull值表示的设定

37. DataGridView单元格样式格式化

38. DataGridView指定单元格颜色设定

39. DataGridView单元格文字字体设置

40. DataGridView根据单元格值设定单元格样式

41. DataGridView设置单元格背景颜色

42. DataGridView行样式描画

43. DataGridView显示行号

44. DataGridView焦点所在单元格焦点框不显示的设定

45. DataGridView列中显示选择框CheckBox

46. DataGridView中显示下拉框ComboBox

47. DataGridView单击打开下拉框

48. DataGridView中显示按钮

49. DataGridView中显示链接

50. DataGridView中显示图像

51. DataGridView编辑中单元格控件取得

52. DataGridView输入自动完成

53. DataGridView单元格编辑时键盘KEY事件取得

54. DataGridView下拉框(ComboBox)单元格编辑时事件取得

55. DataGridView下拉框(ComboBox)单元格允许文字输入设定

56. DataGridView根据值不同在另一列中显示相应图片

57. DataGridView中显示进度条(ProgressBar)

58. DataGridView中添加MaskedTextBox

59. DataGridView中Enter键按下焦点移至旁边的单元格

60. DataGridView行集合化(Group)

 

1.当前的单元格属性取得、变更
[C#]

//現在のセルの値を表示

Console.WriteLine(DataGridView1.CurrentCell.Value);

//現在のセルの列インデックスを表示

Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);

//現在のセルの行インデックスを表示

Console.WriteLine(DataGridView1.CurrentCell.RowIndex);

 

//(0, 0)を現在のセルにする

DataGridView1.CurrentCell = DataGridView1[0, 0];

 

2.DataGridView编辑属性
全部单元格编辑属性

[C#]

//DataGridView1のセルを読み取り専用にする

DataGridView1.ReadOnly = true;

指定行列单元格编辑属性

[C#]

//DataGridView1の2番目の列を読み取り専用にする

DataGridView1.Columns[1].ReadOnly = true;

//DataGridView1の3番目の行を読み取り専用にする

DataGridView1.Rows[2].ReadOnly = true;

//DataGridView1の(0, 0)のセルを読み取り専用にする

DataGridView1[0, 0].ReadOnly = true;

根据条件判断单元格的编辑属性

下例中column2的值是True的时候,Column1设为可编辑

[C#]

//CellBeginEditイベントハンドラ

private void DataGridView1_CellBeginEdit(object sender,

    DataGridViewCellCancelEventArgs e)

{

    DataGridView dgv = (DataGridView)sender;

    //編集できるか判断する

    if (dgv.Columns[e.ColumnIndex].Name == "Column1" &&

        !(bool)dgv["Column2", e.RowIndex].Value)

    {

        //編集できないようにする

        e.Cancel = true;

    }

}

 

3.DataGridView最下面一列新追加行非表示
[C#]

//DataGridView1にユーザーが新しい行を追加できないようにする

DataGridView1.AllowUserToAddRows = false;

 

4.判断当前选中行是否为新追加的行
[C#]

if (DataGridView1.CurrentRow.IsNewRow)

    Console.WriteLine("現在のセルがある行は、新しい行です。");

else

    Console.WriteLine("現在のセルがある行は、新しい行ではありません。");

 

5. DataGridView删除行可否设定
[C#]

//DataGridView1の行をユーザーが削除できないようにする

DataGridView1.AllowUserToDeleteRows = false;

根据条件判断当前行是否要删除

[C#]

//DataGridView1のUserDeletingRowイベントハンドラ

private void DataGridView1_UserDeletingRow(

    object sender, DataGridViewRowCancelEventArgs e)

{

    //削除するかユーザーに確認する

    if (MessageBox.Show("この列を削除しますか?",

        "削除の確認",

        MessageBoxButtons.OKCancel,

        MessageBoxIcon.Question) != DialogResult.OK)

    {

        e.Cancel = true;

    }

}

 

6. DataGridView行列不表示和删除
行列不表示

[C#]

//DataGridView1のはじめの列を非表示にする

DataGridView1.Columns[0].Visible = false;

//DataGridView1のはじめの行を非表示にする

DataGridView1.Rows[0].Visible = false;

行列表头部分不表示

[C#]

//列ヘッダーを非表示にする

DataGridView1.ColumnHeadersVisible = false;

//行ヘッダーを非表示にする

DataGridView1.RowHeadersVisible = false;

指定行列删除

[C#]

//"Column1"を削除する

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行列宽度高度设置为不能编辑
[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;

但是如果列冻结的情况下,冻结的部分不能变更到非冻结的部分。
变更后列位置取得

 

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("{0}, {1}", c.ColumnIndex, c.RowIndex);

}

//選択されている行を表示

Console.WriteLine("選択されている行");

foreach (DataGridViewRow r in DataGridView1.SelectedRows)

{

    Console.WriteLine(r.Index);

}

//選択されている列を表示

Console.WriteLine("選択されている列");

foreach (DataGridViewColumn c in DataGridView1.SelectedColumns)

{

    Console.WriteLine(c.Index);

}

指定行、列、单元格取得

[C#]

//(0, 0)のセルを選択する

DataGridView1[0, 0].Selected = true;

//インデックス1の行を選択する

DataGridView1.Rows[1].Selected = true;

//インデックス2の列を選択する

DataGridView1.Columns[2].Selected = true;

 

13. DataGridView指定单元格是否表示
[C#]

if (!DataGridView1[0, 0].Displayed && DataGridView1[0, 0].Visible)

{

    DataGridView1.CurrentCell = DataGridView1[0, 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; 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 == 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++;

}


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

[C#]

//セルに表示するToolTipを設定する

DataGridView1[0, 0].ToolTipText = "このセルは変更できません";

//列ヘッダーに表示するToolTipを設定する

DataGridView1.Columns[0].ToolTipText = "この列には数字を入力できます";

//行ヘッダーに表示するToolTipを設定する

DataGridView1.Rows[0].HeaderCell.ToolTipText = "この行のセルは変更できません";

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

[C#]

//CellToolTipTextNeededイベントハンドラ

private void DataGridView1_CellToolTipTextNeeded(object sender,

    DataGridViewCellToolTipTextNeededEventArgs e)

{

    e.ToolTipText = e.ColumnIndex.ToString() + ", " + e.RowIndex.ToString();

}

 

19. DataGridView中的ContextMenuStrip属性

[C#]

//DataGridViewのContextMenuStripを設定する

DataGridView1.ContextMenuStrip = this.ContextMenuStrip1;

//列のContextMenuStripを設定する

DataGridView1.Columns[0].ContextMenuStrip = this.ContextMenuStrip2;

//列ヘッダーのContextMenuStripを設定する

DataGridView1.Columns[0].HeaderCell.ContextMenuStrip = this.ContextMenuStrip2;

//行のContextMenuStripを設定する

DataGridView1.Rows[0].ContextMenuStrip = this.ContextMenuStrip3;

//セルのContextMenuStripを設定する

DataGridView1[0, 1].ContextMenuStrip = this.ContextMenuStrip4;

也可以用CellContextMenuStripNeeded、RowContextMenuStripNeeded属性进行定义

[VB.NET]

[C#]

//CellContextMenuStripNeededイベントハンドラ

private void DataGridView1_CellContextMenuStripNeeded(object sender,

    DataGridViewCellContextMenuStripNeededEventArgs e)

{

    DataGridView dgv = (DataGridView)sender;

    if (e.RowIndex < 0)

    {

        //列ヘッダーに表示するContextMenuStripを設定する

        e.ContextMenuStrip = this.ContextMenuStrip1;

    }

    else if (e.ColumnIndex < 0)

    {

        //行ヘッダーに表示するContextMenuStripを設定する

        e.ContextMenuStrip = this.ContextMenuStrip2;

    }

    else if (dgv[e.ColumnIndex, e.RowIndex].Value is int)

    {

        //セルが整数型のときに表示するContextMenuStripを変更する

        e.ContextMenuStrip = this.ContextMenuStrip3;

    }

}

 

20.指定DataGridView的滚动框位置

[C#]

//先頭の行までスクロールする

DataGridView1.FirstDisplayedScrollingRowIndex = 0;

//先頭の列までスクロールする

DataGridView1.FirstDisplayedScrollingColumnIndex = 0;

 

21. DataGridView手动追加列

[C#]

//列が自動的に作成されないようにする

DataGridView1.AutoGenerateColumns = false;

//データソースを設定する

DataGridView1.DataSource = BindingSource1;

 

//DataGridViewTextBoxColumn列を作成する

DataGridViewTextBoxColumn textColumn = new DataGridViewTextBoxColumn();

//データソースの"Column1"をバインドする

textColumn.DataPropertyName = "Column1";

//名前とヘッダーを設定する

textColumn.Name = "Column1";

textColumn.HeaderText = "Column1";

//列を追加する

DataGridView1.Columns.Add(textColumn);

 

22. DataGridView全体分界线样式设置

[C#]

//DataGridViewの境界線を3Dにする

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#]

//CellFormattingイベントハンドラ

private void DataGridView1_CellFormatting(object sender,

    DataGridViewCellFormattingEventArgs e)

{

    DataGridView dgv = (DataGridView)sender;

 

    //セルの列を確認

    if (dgv.Columns[e.ColumnIndex].Name == "Column1" && e.Value is 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#]

//DefaultValuesNeededイベントハンドラ

private void DataGridView1_DefaultValuesNeeded(object sender,

    DataGridViewRowEventArgs e)

{

    //セルの既定値を指定する

    e.Row.Cells["Column1"].Value = 0;

    e.Row.Cells["Column2"].Value = "-";

}

 

26. DataGridView单元格数据错误标签表示


[C#]

//(0, 0)のセルにエラーアイコンを表示する

DataGridView1[0, 0].ErrorText = "セルの値を確認してください。";

 

//インデックスが3の行にエラーアイコンを表示する

DataGridView1.Rows[3].ErrorText = "負の値は入力できません。";

 

在大量单元格需要错误提示时,也可以用CellErrorTextNeeded、RowErrorTextNeeded事件

[C#]

//CellErrorTextNeededイベントハンドラ

private void DataGridView1_CellErrorTextNeeded(object sender,

    DataGridViewCellErrorTextNeededEventArgs e)

{

    DataGridView dgv = (DataGridView)sender;

    //セルの値が負の整数であれば、エラーアイコンを表示する

    object cellVa

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值