3

我的 Windows 窗体中有一个 gridview。现在我使用以下代码显示自定义工具提示,

private void Audit_Dg_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)


{
          if (e.ColumnIndex == 7 || e.ColumnIndex == 8 || e.ColumnIndex == 10 || e.ColumnIndex == 11 && e.RowIndex >= 0)
          {           
              DataGridViewCell cell = this.Audit_Dg.Rows[e.RowIndex].Cells[e.ColumnIndex];

          cell.ToolTipText = "Click Here To View The Message";


      }
}

它显示了满足我条件的那些单元格的消息,以及所有不满足我条件的单元格内容。有没有办法从我的网格视图中删除该工具提示并仅显示我的自定义工具提示?如果有什么办法,请帮助我...

4

2 回答 2

3

不幸的是,DataGridView控件不支持这一点。它的ShowCellToolTips属性只能用于全局禁用工具提示。显示工具提示的情况记录为:

  • 属性的值DataSourcenotnull或属性的值VirtualModeis ,并且事件 true的处理程序 将属性设置为 以外的值。CellToolTipTextNeededDataGridViewCellToolTipTextNeededEventArgs.ToolTipTextString.Empty

  • 单元格的ToolTipText属性具有 以外的值String.Empty。当存在事件处理程序时,设置此属性无效, CellToolTipTextNeeded因为获取属性值会自动引发事件并返回事件处理程序中指定的工具提示文本。

  • 单元格值在单元格显示中被截断。当单元格ToolTipText属性值为String.Empty时,工具提示中显示截断单元格值的完整值。

如您所见,没有办法避免第三种情况:如果ShowCellToolTips是并且单元格的值被截断,true显示包含完整值的工具提示。

于 2012-10-12T07:45:48.463 回答
1

如上一个答案中所指出的,当未设置工具提示且列宽不足以显示单元格文本时,会显示默认工具提示。可以通过使列足够宽以显示文本或连接 CellFormatting 事件并提供适合列的文本来避免默认工具提示,例如

private void grd_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
  switch (e.ColumnIndex)
  {
    case 7:
    case 8:
      e.Value = string.Empty;
      e.FormattingApplied = true;
      break;
  }
}
于 2015-02-23T14:48:13.873 回答