DataGridView单元格字符超长,ToolTip冒泡提醒功能,可控制宽度和持续显示时间

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;
           
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值