C# 带提示消息的自定义按钮

        以前一直纳闷像Office、VS2008等大型软件上面的很多按钮,因为按钮很小不足以显示其文字信息,而用图标代替,每次鼠标一接近时就会出现一个小的白色框框——toolTip,显示按钮的相关描述。当把所有工具条都显示出来时可以有上百个按钮,难道每个按钮都去写一个onMouseHover襄阳处理函数么?

        据我猜测,那些造就这些大型工程的工程师绝对没这么傻,简单一个自定义Button即可实现繁琐的代码复写工作。在自定义时,TipButton继承自Button,在视图设计时拖一个toolTip工具进去。

具体实现如下:

先上代码TipButton

        这里面包含一个解决方案,两个项目:一个用于测试,一个为自定义按钮。

分开的目的在于,将TipButton编译为类库dll,在写其他应用时可以在工具箱里添加这个控件便于使用。

TipButton代码如下:

public partial class TipButton : Button
    {
        /// <summary>
        /// 待提示的文字信息
        /// </summary>
        private String tipText;

        [Browsable(true)]
        [Description("get or set text would be shown on the button when the point of your mouse is hovering on it!\n获取或设置鼠标指针悬停在按钮上时要显示的文本")]
        [Category("TipButton")]
        [RefreshProperties(RefreshProperties.All)]
        public String TipText
        {
            get
            {
                return tipText;
            }
            set
            {
                if (value != null)
                {
                    if (value.Length < 1)
                    {
                        tipText = Text;
                    }
                    else
                    {
                        tipText = value;
                    }
                }
                else
                {
                    tipText = Text;
                }
            }
        }
        public TipButton()
        {
            InitializeComponent();
            toolTip1.SetToolTip(this, tipText);
        }

        private void TipButton_MouseHover(object sender, EventArgs e)
        {
            toolTip1.Show(tipText,this);
        }
    }

tipText为自定义的一个属性,通过TipText封装后可显示在控件的属性窗口,如

控件属性

[Browsable(true)]:设置是否在属性窗口可见

[Description("xxx")]:"xxx"为控件的描述文字,显示在属性窗口下面

鼠标悬停事件:TipButton_MouseHover,用于响应每次鼠标悬停在按钮上时弹出toolTip提示信息。

toolTip的几个参数如下:

toolTip的属性

         第一个为提示信息悬停时间,第二个为初始化延时,第三个为下次显示延时,这些都在自定义Button时设定了的,后续不能更改。不过若要变得更人性化,读着课自己修改代码,像TipText一样加几个属性显示在按钮属性窗口供使用时编辑。

 

大体就说这么多,代码简单易懂,读者自己慢慢看哈~有问题Q我~

PS:第一次写技术博客,欢迎广大读者提出批评及改进意见,我一定会不断努力的~

我的QQ:1239848066,邮箱就不用说了吧~

反馈请猛戳:

原创博客:转载后记得附带原文链接,谢谢~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值