如何实现像windows任务栏一样停靠后不会覆盖桌面

「已注销」 2005-08-04 08:30:57
如题 小弟想实现这种效果 一个条状的Form,在停靠在桌面的边缘后,桌面的工作区会自动调整,不会被它覆盖,请问大虾们这个应该是什么思路
...全文
137 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiezic 2005-08-04
  • 打赏
  • 举报
回复
楼主把最后的实现代码帖出来,大家共享资源!
「已注销」 2005-08-04
  • 打赏
  • 举报
回复
感谢大家 自动停靠和自动隐藏我已经能够做到 现在的问题就是如何能够改变桌面工作区使得程序窗体不会掩盖桌面 谢谢
李天平 2005-08-04
  • 打赏
  • 举报
回复
给你一点示例代码:

#region 自动隐藏窗体
private void Form1_Move(object sender, System.EventArgs e)
{
if(this.Top<10&&this.Top>0)
{
if(this.timer2.Enabled==false)
{
this.timer2.Enabled=true;
this.timer2_Tick(sender,e);
}
}
}
private void timer2_Tick(object sender, System.EventArgs e)
{

if(this.Top<10&&this.Top>0)
{
int h=this.Height+this.Top-2;
for(int i=0;i<h;i++)
{
this.Top-=1;
}
this.timer2.Enabled=false;
}
else
if(this.Top<0)
{
int h=1-this.Top;

for(int i=0;i<h;i++)
{
this.Top+=1;
}
this.timer2.Enabled=false;

}
}

private void Form1_MouseEnter(object sender, System.EventArgs e)
{
if(this.Top<0)
{
this.timer2.Enabled=true;
this.timer2_Tick(sender,e);
}

}

private void Form1_MouseLeave(object sender, System.EventArgs e)
{
if(this.Top<10&&this.Top>=0)
{
if((Control.MousePosition.X>this.Left)&&(Control.MousePosition.X<this.Right))
{
if(Control.MousePosition.Y<this.Bottom)
{
return;
}
}

this.timer2.Enabled=true;
this.timer2_Tick(sender,e);
}

}


#endregion
李天平 2005-08-04
  • 打赏
  • 举报
回复
这个就是检测窗体变化,并在窗体变化的事件里做调整窗体大小和位置

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧