第一部分 :
经常会看到类似FlashGet和迅雷这样的下载工具,当最小化时,屏幕右上角会出现一个悬浮窗口,可以用鼠标拖动到任何位置,鼠标右键可以做一些操作,鼠标移上去的时候下面也会有提示,那么这些用C#是如何实现的哪?
第一,悬浮窗口是一个TopMost窗体(新建窗体,设置TopMost属性);
第二,鼠标拖动,做拖动就是要对TopMost窗体添加一个MouseMove事件,判断鼠标的位置,通过改变Location移动TopMost窗体;
第三,鼠标右键,在 .net 2.0里可以对TopMost窗体添加ContextMenuStrip来实现;
第四,跟随鼠标的提示,可以对窗体添加ToolTip组件;ToolTip有3个主要的延迟属性:InitialDelay (多长时间工具提示字符串才会出现)、ReshowDelay(移到另一个控件时,出现后面的工具提示字符串所需的毫秒数)、AutoPopDelay(提示字符串显示多长时间),在窗体上可以设置这些属性。不过MS做的这个组件似乎有点问题,如果移动了窗体,那么ToolTip就再也不会出现提示,还有就是如果AutoPopDelay=5000;那么5秒之后提示框自动消失,并且以后再也不会出现提示,但是如果你是在<5秒时手动移开了鼠标,那么才正常;为了避免这种情况,可以给TopMost窗体添加两个事件:frmTopMost_MouseEnter 和frmTopMost_MouseLeave:
这样就正常了。
第二部分 部分代码
第三部分
注:此文章是参考愚翁大哥的一篇文章而写的。地址:http://blog.csdn.net/Knight94
经常会看到类似FlashGet和迅雷这样的下载工具,当最小化时,屏幕右上角会出现一个悬浮窗口,可以用鼠标拖动到任何位置,鼠标右键可以做一些操作,鼠标移上去的时候下面也会有提示,那么这些用C#是如何实现的哪?
第一,悬浮窗口是一个TopMost窗体(新建窗体,设置TopMost属性);
第二,鼠标拖动,做拖动就是要对TopMost窗体添加一个MouseMove事件,判断鼠标的位置,通过改变Location移动TopMost窗体;
第三,鼠标右键,在 .net 2.0里可以对TopMost窗体添加ContextMenuStrip来实现;
第四,跟随鼠标的提示,可以对窗体添加ToolTip组件;ToolTip有3个主要的延迟属性:InitialDelay (多长时间工具提示字符串才会出现)、ReshowDelay(移到另一个控件时,出现后面的工具提示字符串所需的毫秒数)、AutoPopDelay(提示字符串显示多长时间),在窗体上可以设置这些属性。不过MS做的这个组件似乎有点问题,如果移动了窗体,那么ToolTip就再也不会出现提示,还有就是如果AutoPopDelay=5000;那么5秒之后提示框自动消失,并且以后再也不会出现提示,但是如果你是在<5秒时手动移开了鼠标,那么才正常;为了避免这种情况,可以给TopMost窗体添加两个事件:frmTopMost_MouseEnter 和frmTopMost_MouseLeave:
private void frmTopMost_MouseEnter(object sender, System.EventArgs e)
{
this.toolTip1.Active = true;
this.toolTip1.AutoPopDelay = 5000;
this.toolTip1.InitialDelay = 500;
this.toolTip1.ReshowDelay = 100;
this.toolTip1.ShowAlways = true;
}
{
this.toolTip1.Active = true;
this.toolTip1.AutoPopDelay = 5000;
this.toolTip1.InitialDelay = 500;
this.toolTip1.ReshowDelay = 100;
this.toolTip1.ShowAlways = true;
}
private void frmTopMost_MouseLeave(object sender, System.EventArgs e)
{
this.toolTip1.Active = false;
}
{
this.toolTip1.Active = false;
}
这样就正常了。
第二部分 部分代码
第三部分
注:此文章是参考愚翁大哥的一篇文章而写的。地址:http://blog.csdn.net/Knight94