using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.ComponentModel;
/*
* Bob 2012-06-25 写
* 自定义原因:DataGridView单元格默认ToolTip冒泡提醒无法控制其宽度和显示时间的,如果单元格字符超长,则ToolTip冒泡也会拉的很长,影响美观(真不知道有没有,所以自己写了一个)
* 注意:BindGridView属性(必选属性)不能为空
* 调用很简单:本来是写的一个类,但是后来干脆写成一个组件,使用更方便,托到窗体上,选择BindGridView属性和OwnerForm属性即可
* 说明:还有什么其他需求,可以自己扩展
*
* 关键属性:
* BindGridView属性 --> 绑定一个DataGridView控件
* OwnerForm属性 --> 绑定一个Form(即当前控件拖放窗体),主要(Duration = -1)时,当窗体失去焦点,隐藏ToolTip冒泡
* Duration属性 --> 冒泡持续时间,单位毫秒
* DisColumns属性 --> 指定需要冒泡的列,默认全部都显示(当文字超过单元格宽度时),注意是列的Name
* Width、MinWidth、MaxWidth --> 设置冒泡宽度
*
* Bug说明:
* 1、当单元格全部为数字、字母、数字字母混合则无法换行
* 2、当前DataGridView工作区域,DataGridView最后一行,鼠标从单元格下面移出,ToolTip不隐藏,所以有了OwnerForm属性
*/
namespace ProjectTest
{
/// <summary>
/// DataGridView显示自定义ToolTip冒泡
/// Bob 2012-06-25 写
/// </summary>
public class DataGridViewCellToolTip : System.ComponentModel.Component
{
ToolTipEx tooltip = null;
DataGridView dgvList = null;
Graphics graphics = null;
int CurrentRowIndex = -1;
int CurrentColIndex = -1;
int minWidth = -1; //显示最小宽度
int maxWidth = -1;
int currentWidth = -1;
string[] colnames = null; //要显示ToolTip提醒的列
private Form ownerForm = null;
int duration = -1; //持续显示时间
#region 构造方法
/// <summary>
/// DataGridView显示自定义ToolTip冒泡
/// </summary>
public DataGridViewCellToolTip(DataGridView dgv)
{
InstallToolTip();
this.OwnerForm = null;
this.BindGridView = dgv;
this.colnames = new string[0];
}
/// <summary>
/// DataGridView显示自定义ToolTip冒泡
/// </summary>
public DataGridViewCellToolTip()
{
InstallToolTip();
}
/// <summary>
/// DataGridView显示自定义ToolTip冒泡
/// </summary>
/// <param name="dgv">要绑定的DataGridView控件</param>
public DataGridViewCellToolTip(Form ownerform, DataGridView dgv)
{
InstallToolTip();
this.OwnerForm = ownerform;
this.BindGridView = dgv;
this.colnames = new string[0];
}
/// <summary>
/// DataGridView显示自定义ToolTip冒泡
/// </summary>
/// <param name="dgv">要绑定的DataGridView控件</param>
/// <param name="columns">要冒泡列(为空或者Length等于0则所有列显示)</param>
public DataGridViewCellToolTip(Form ownerform, DataGridView dgv, string[] columns)
{
InstallToolTip();
this.OwnerForm = ownerform;
this.BindGridView = dgv;
this.colnames = columns;
}
#endregion
#region 属性
/// <summary>
/// 绑定DataGridView控件
/// </summary>
[DefaultValue(null)]
[Description("绑定DataGridView对象【必填项】")]
public DataGridView BindGridView
{
get { return dgvList; }
set
{
UninstallDgvEvents();
dgvList = value;
DataGridView单元格字符超长,ToolTip冒泡提醒功能,可控制宽度和持续显示时间
最新推荐文章于 2023-09-13 11:20:58 发布