就是把QQ拖到显示器顶端QQ就隐藏了,鼠标指上去就出现了。
解决方案 »
- 多实例对一个对象的事件侦听,应该怎么写好?
- 在PANEL中如何获得键盘事件?
- VS IDE 文件定位
- C# Socket编程
- Direct3D的DriverInternalErrorException异常
- 怎样把帮助文档(.chm)与c# Winform连接在一起 并定位到某页某一位置呢
- 我设计了一个timer,但是出现了问题,label的text没变化,请大家帮我看看怎么错了???
- 一个非常厉害的问题,!!!!????
- 保存文本框内容到word遇到的问题
- 感觉自写的正则没错啊,可就是什么也捕获不到,代码在里面,请高手改下,谢谢!!!
- 怎么使按钮按一下就改变一次颜色??
- 安装NDP20-KB925488-X86.msp所遇问题
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
} private void timer1_Tick(object sender, EventArgs e)
{
if (WindowState != FormWindowState.Minimized)
{
int ScreenWidth = Screen.PrimaryScreen.WorkingArea.Width; //屏幕宽度
int ScreenRight = Screen.PrimaryScreen.WorkingArea.Right; //屏幕高度
int MouseX = Control.MousePosition.X; //鼠标X位置
int MouseY = Control.MousePosition.Y;//鼠标垂直位置
if (this.Left < 0 && this.Top < 0)
{
this.Left = 0;
this.Top = 1;
}
if (this.Left >= ScreenWidth - this.Right && this.Top < 0) //如果自己的左边是否在屏幕的边缘
{
this.Left = ScreenWidth;
this.Top = 0;
}
if (this.Top < 0 && MouseX > this.Left && MouseX < this.Left + this.Width && MouseY < 3)
{
this.Top = 0;
}
if (this.Top <= 0 && this.Left > 0 && this.Left < ScreenWidth - this.Width)
{
if (MouseX < this.Left || MouseX > this.Left + this.Width || MouseY > this.Top + this.Right)
{
this.Top = 3 - this.Right;
}
}
if (this.Left < 0 && MouseY > this.Top && MouseY < this.Top + this.Width && MouseX < 3)
{
this.Left = 0;
}
if (this.Left <= 0 && this.Top > 0 && this.Top < ScreenRight - this.Right)
{
if (MouseY < this.Top || MouseY > this.Top + this.Right || MouseX > this.Width)
{
this.Left = 3 - this.Width;
}
}
if (this.Left >= ScreenWidth - this.Width && this.Top > 0 && this.Top < ScreenRight - this.Width)
{
if (MouseY < this.Top || MouseY > this.Top + this.Right || MouseX < ScreenWidth - this.Width)
{
this.Left = ScreenWidth - 3;
}
} if (this.Left > ScreenWidth - 5) //判断自己的左边是否隐藏了
{
if (MouseX > ScreenWidth - 5) //如果隐藏了 判断鼠标是不在屏幕的边缘
{
this.Left = ScreenWidth - this.Width;
}
}
}
} }
}
//或者使用一个panel来实现,panel的宽度和QQ的宽度一样,高度设置5px左右,启动是隐藏panel,显示QQ框,当鼠标经过时,也是一样,鼠标移开时,显示panel,并且悬挂在屏幕顶端,隐藏qq框。。 public partial class Form3 : Form
{
int height = 0;
bool IsX = false; //是否悬浮
public Form3()
{
InitializeComponent();
panel1.Visible = false;
height = this.Height;
}
private void timer1_Tick(object sender, EventArgs e)
{
Point p = MousePosition;
if ((p.X < Left || p.X > Left + Width || p.Y > Height) && (Top <= 0)) //如果鼠标不在窗体上,并且窗体上边距小于等于0的话。则悬浮
{
IsX = true;
}
else
{
IsX = false;
}
SetForm();
} /// <summary>
/// 设置窗体是否悬浮
/// </summary>
private void SetForm()
{
if (IsX)
{
Top = 0;
this.Height = panel1.Height;
this.FormBorderStyle = FormBorderStyle.None;
panel1.Visible = true;
}
else
{
panel1.Visible = false;
FormBorderStyle = FormBorderStyle.Sizable;
Height = height;
}
}
[email protected]多谢啊。