.Net标准控件与自定义控件(2) ToolTipButton

继昨天的NoCopyTextBox(http://bearocean.cnblogs.com/archive/2006/04/26/385413.html
以后,客户又提出了新的要求:

            客户需要一套机票定位系统,用一个小方框来代表一个机位,点击以后弹出对话框,将由系统的操作人员填写预定信息。
            所以我们考虑用Button来实现这个功能。
            
            但是客户有一个附加要求,就是当鼠标移动到机位的方框上是,尽管不点击也能够显示定位信息:           
            但是具我所知默认的Button并没有这个功能。(如果有就白忙了)
            所以要自己做一个新的Button控件。

            最好是这样,MyButton myButton =new Button();
                                      myButton.Title ="This is a test";

            这样就能自动的显示Title的内容。
            之所以把这个属性取名为Title是因为这个跟Html的Title如此相象。

            其后想到了.Net 提供的ToolTip
            于是利用这个控件,做了一个ToolTipButton.
            原代码如下:

               

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;


namespace Uestc_15_UI
{
    /** 
    /// HelperButton 的摘要说明。
    /// 
    public class HelpTipButton :System.Windows.Forms.Button
    {
        private System.Windows.Forms.ToolTip HelpTip;
        private System.ComponentModel.IContainer components;

        public delegate void OnTitleChanged();
        public event OnTitleChanged TitleChaneged;

        private string strTitle ="";
        public string Title
        {
            get
            {
                return this.strTitle;
            }
            set
            {
                this.strTitle =value;
                if(this.TitleChaneged !=null)
                {
                    this.TitleChaneged();
                }
            }
        }
    
        public HelpTipButton()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
            this.components = new System.ComponentModel.Container();
            this.HelpTip = new System.Windows.Forms.ToolTip(this.components);
            this.TitleChaneged +=new OnTitleChanged(HelpTipButton_TitleChaneged);
        }

        private void InitializeComponent()
        {
            // 
            // HelpTipButton
            // 

        }

        private void HelpTipButton_TitleChaneged()
        {
            if(this.strTitle !="")
            {
                this.HelpTip.SetToolTip(this,this.strTitle);
            }
        }
    }
}

 

其实实现很简单,只是继承自Button,然后添加了一个私有成员ToolTip,和一个属性string Title
并定义一个事件去检测Title.一旦Title变化,就重新利用HelpTip.SetToolTip(this,this.strTitle)将字符串信息
设置到ToolTip上。
同时SetToopTip将ToolTip与Button绑定。

最后,只要重新作一个Surface就差不多了。
其实真正的实现可能还要复杂一点,如果要实现上述定机位功能,最好把string Title换成一个实际的类。
初始化ToolTipButton时是将一个ClientInfo实例附给他。而不是将一串名为Title的字符串赋给它。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值