超全经典DataGridView+编程36计 联系客服

发布时间 : 星期日 文章超全经典DataGridView+编程36计更新完毕开始阅读a4ccc203eff9aef8951e0605

{

isHeader = false; continue; }

// 按 Tab 分割数据

string[] vals = line.Split(' '); // 判断列数是否统一

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]; }

// DataGridView的行索引+1 insertRowIndex++; }

? DataGridView 单元格的ToolTip的设置

GO TO TOP

DataGridView.ShowCellToolTips = True 的情况下, 单元格的 ToolTip 可以表示出来。对于单元格窄小,无法完全显示的单元格, ToolTip 可以显示必要的信息。

1) 设定单元格的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 = \该行单元格内容不能修改\

2) CellToolTipTextNeeded 事件

在批量的单元格的 ToolTip 设定的时候,一个一个指定那么设定的效率比较低, 这时候可以利用 CellToolTipTextNeeded 事件。当单元格的 ToolTipText 变化的时候也会引发该事件。但是,当DataGridView的DataSource被指定且VirualMode=True的时候,该事件不会被引发。

[VB.NET]

' CellToolTipTextNeeded事件处理方法

Private Sub DataGridView1_CellToolTipTextNeeded(ByVal sender As Object, _

ByVal e As DataGridViewCellToolTipTextNeededEventArgs) _ Handles DataGridView1.CellToolTipTextNeeded

e.ToolTipText = e.ColumnIndex.ToString() + \ring() End Sub [C#]

// CellToolTipTextNeeded事件处理方法

private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e) {

e.ToolTipText = e.ColumnIndex.ToString() + \ring(); }

? DataGridView 的右键菜单(ContextMenuStrip)

GO TO TOP

DataGridView, DataGridViewColumn, DataGridViewRow, DataGridViewCell 有 ContextMenuStrip 属性。可以通过设定 ContextMenuStrip 对象来控制 DataGridView 的右键菜单的显示。 DataGridViewColumn 的 ContextMenuStrip 属性设定了 除了列头以外的单元格的右键菜单。 DataGridViewRow 的 ContextMenuStrip 属性设定了除了行头以外的单元格的右键菜单。

DataGridViewCell 的 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(0, 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, 0].ContextMenuStrip = this.ContextMenuStrip4; 对于单元格上的右键菜单的设定,优先顺序是: Cell > Row > Column > DataGridView

? CellContextMenuStripNeeded、RowContextMenuStripNeeded 事件 利用 CellContextMenuStripNeeded 事件可以设定单元格的右键菜单,尤其但需要右键菜单根据单元格值的变化而变化的时候。比起使用循环遍历,使用该事件来设定右键菜单的效率更高。但是,在DataGridView使用了DataSource绑定而且是VirtualMode的时候,该事件将不被引发。

[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

' 如果单元格值是整数时

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) {

// 如果单元格值是整数时

e.ContextMenuStrip = this.ContextMenuStrip3; } }

同样,可以通过 RowContextMenuStripNeeded 事件来设定行的右键菜单。 [VB.NET]

' RowContextMenuStripNeeded事件处理方法

Private Sub DataGridView1_RowContextMenuStripNeeded( _ ByVal sender As Object, _

ByVal e As DataGridViewRowContextMenuStripNeededEventArgs) _