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

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

  1. DataGridView中的ContextMenuStrip属性
  2. DataGridView指定滚动框位置
  3. DataGridView手动追加列
  4. DataGridView全体分界线样式设置
  5. DataGridView根据单元格属性更改显示内容
  6. DataGridView新追加行的行高样式设置る
  7. DataGridView新追加行单元格默认值设置

1.DataGridView中的ContextMenuStrip属性

[VB.NET]
'DataGridViewのContextMenuStripを設定する
DataGridView1.ContextMenuStrip = Me.ContextMenuStrip1
'列のContextMenuStripを設定する
DataGridView1.Columns(0).ContextMenuStrip = Me.ContextMenuStrip2
'列ヘッダーのContextMenuStripを設定する
DataGridView1.Columns(0).HeaderCell.ContextMenuStrip = Me.ContextMenuStrip2
'行のContextMenuStripを設定する
DataGridView1.Rows(0).ContextMenuStrip = Me.ContextMenuStrip3
'セルのContextMenuStripを設定する
DataGridView1(1, 0).ContextMenuStrip = Me.ContextMenuStrip4
[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]
'CellContextMenuStripNeededイベントハンドラ
Private Sub DataGridView1_CellContextMenuStripNeeded( ByVal sender As Object, ByVal e As DataGridViewCellContextMenuStripNeededEventArgs) Handles DataGridView1.CellContextMenuStripNeeded
Dim dgv As DataGridView = CType(sender, DataGridView)
If e.RowIndex < 0 Then
'列ヘッダーに表示するContextMenuStripを設定する
e.ContextMenuStrip = Me.ContextMenuStrip1
ElseIf e.ColumnIndex < 0 Then
'行ヘッダーに表示するContextMenuStripを設定する
e.ContextMenuStrip = Me.ContextMenuStrip2
ElseIf TypeOf (dgv(e.ColumnIndex, e.RowIndex).Value) Is Integer Then
'セルが整数型のときに表示するContextMenuStripを変更する
e.ContextMenuStrip = Me.ContextMenuStrip3
End If
End Sub
[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;
}
}

2.DataGridView指定滚动框位置

[VB.NET]
'先頭の行までスクロールする
DataGridView1.FirstDisplayedScrollingRowIndex = 0
'先頭の列までスクロールする
DataGridView1.FirstDisplayedScrollingColumnIndex = 0
[C#]
//先頭の行までスクロールする
DataGridView1.FirstDisplayedScrollingRowIndex = 0;
//先頭の列までスクロールする
DataGridView1.FirstDisplayedScrollingColumnIndex = 0;

3.DataGridView手动追加列

[VB.NET]
'列が自動的に作成されないようにする
DataGridView1.AutoGenerateColumns = False
'データソースを設定する
DataGridView1.DataSource = BindingSource1
'DataGridViewTextBoxColumn列を作成する
Dim textColumn As New DataGridViewTextBoxColumn()
'データソースの"Column1"をバインドする
textColumn.DataPropertyName = "Column1"
'名前とヘッダーを設定する
textColumn.Name = "Column1"
textColumn.HeaderText = "Column1"
'列を追加する
DataGridView1.Columns.Add(textColumn)
[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);

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

[VB.NET]
'DataGridViewの境界線を3Dにする
DataGridView1.BorderStyle = BorderStyle.Fixed3D
[C#]
//DataGridViewの境界線を3Dにする
DataGridView1.BorderStyle = BorderStyle.Fixed3D;

单元格上下左右分界线样式设置

[VB.NET]
'セルの上と左を二重線のくぼんだ境界線にし、下と右を一重線のくぼんだ境界線にする
DataGridView1.AdvancedCellBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.InsetDouble
DataGridView1.AdvancedCellBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.InsetDouble
[C#]
//セルの上と左を二重線のくぼんだ境界線にし、下と右を一重線のくぼんだ境界線にする
DataGridView1.AdvancedCellBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.InsetDouble;
DataGridView1.AdvancedCellBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.Inset;
DataGridView1.AdvancedCellBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.Inset;
DataGridView1.AdvancedCellBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.InsetDouble;

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

如下例,当该列是字符串时,自动转换文字大小写

[VB.NET]
'DataGridViewの境界線を3Dにする
DataGridView1.BorderStyle = BorderStyle.Fixed3D
[C#]
//DataGridViewの境界線を3Dにする
DataGridView1.BorderStyle = BorderStyle.Fixed3D;

单元格上下左右分界线样式设置

[VB.NET]
'CellFormattingイベントハンドラ
Private Sub DataGridView1_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
Dim dgv As DataGridView = CType(sender, DataGridView)
'セルの列を確認
If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso TypeOf e.Value Is String Then
'大文字にして表示する
Dim str As String = e.Value.ToString()
e.Value = str.ToUpper()
'フォーマットの必要がないことを知らせる
e.FormattingApplied = True
End If
End Sub
[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;
}
}

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

行高设置

[VB.NET]
'行テンプレートの高さを設定する
DataGridView1.RowTemplate.Height = 50
'行の最低の高さを設定する
DataGridView1.RowTemplate.MinimumHeight = 50
[C#]
//行テンプレートの高さを設定する
DataGridView1.RowTemplate.Height = 50;
//行の最低の高さを設定する
DataGridView1.RowTemplate.MinimumHeight = 50;

样式设置

[VB.NET]
'行テンプレートのセルスタイルの背景色を黄色にする
DataGridView1.DefaultCellStyle.BackColor = Color.Yellow
[C#]
//行テンプレートのセルスタイルの背景色を黄色にする
DataGridView1.DefaultCellStyle.BackColor = Color.Yellow;

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

[VB.NET]
'DefaultValuesNeededイベントハンドラ
Private Sub DataGridView1_DefaultValuesNeeded(ByVal sender As Object, ByVal e As DataGridViewRowEventArgs) Handles DataGridView1.DefaultValuesNeeded
'セルの既定値を指定する
e.Row.Cells("Column1").Value = 0
e.Row.Cells("Column2").Value = "-"
End Sub
[C#]
//DefaultValuesNeededイベントハンドラ
private void DataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
//セルの既定値を指定する
e.Row.Cells["Column1"].Value = 0;
e.Row.Cells["Column2"].Value = "-";
}
原文地址:https://www.cnblogs.com/MFxxk/p/1656471.html