wpf、winform仿QQ靠边隐藏

先说下下面的代码和demo是wpf的,如果winform要用,改动不大的。

实现思路: 通过定时刷新鼠标位置 和 窗体坐标 进行计算 来控制窗体的隐藏 显示

代码都有详细的注释

//窗体状态 true为显示 false为隐藏
private bool IsHide = false;
//鼠标状态 true为进入窗体 false为离开窗体
private bool IsMouseEnter = false;
//计时器 通过win32api实时获取鼠标位置
private Timer timer; public MainWindow()
{
InitializeComponent();
timer = new Timer();
timer.Interval = ;
timer.Tick += new EventHandler(timer_Tick); } void timer_Tick(object sender, EventArgs e)
{
MousePosition.CurrentPoint point;
MousePosition.MouseMove(out point);
//判断鼠标是否进入窗体
if (point.X >= this.Left && point.X <= this.Left + this.Width&&point.Y>=this.Top&&point.Y<=this.Top+this.Height)
{
//鼠标在窗体内部
IsMouseEnter = true;
}
else
{
//鼠标离开窗体
IsMouseEnter = false;
} //判断窗体是否在隐藏状态
if (IsHide)
{
//如果在隐藏状态 且 横坐标在窗体横坐标方位 纵坐标小于等于20 则显示窗体 并把窗体状态设置为显示
if (point.X >= this.Left && point.X <= this.Left + this.Width)
{
if (point.Y <= )
{
this.Top = ;//显示窗体
IsHide = false;//把窗体状态设置为显示
}
}
}
else
{
//如果在显示状态 且纵坐标小于等于20 切鼠标不在窗体内 则隐藏窗体 if (this.Top <= && !IsMouseEnter)
{
this.Top = - this.Width;//隐藏窗体
IsHide = true;
}
}
} private void Window_Loaded(object sender, RoutedEventArgs e)
{
timer.Start();
}
上一篇:一道简单的IOS面试题-b


下一篇:开发日志系列:一个表单页面的呈现与提交(一)——JSON的操作