您的位置:首页 > 编程语言 > C#

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

2013-07-27 09:00 567 查看
        以前一直纳闷像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的几个参数如下:



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

 

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

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

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

反馈请猛戳:



原创博客:转载后记得附带原文链接,谢谢~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息