c# 实现窗体拖到屏幕边缘自动隐藏

 更新时间:2009年02月14日 14:31:02   作者:  
让窗体拖到屏幕边缘自动隐藏的原理,通过Form1_LocationChanged的方法,当窗体位置发生改变时,判断其是否在屏幕边缘,在则隐藏。再通过Timer控件经过指定时间判断出鼠标的位置,若鼠标在屏幕左边、上边或右边,这根据窗体的位置,调出窗体。
以下给出源代码: (注:hide为窗体名称)
复制代码 代码如下:

private void hide_Load(object sender, EventArgs e)
{
System.Windows.Forms.Timer StopRectTimer = new System.Windows.Forms.Timer();
StopRectTimer.Tick += new EventHandler(timer1_Tick);
StopRectTimer.Interval = 100;
StopRectTimer.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (this.Bounds.Contains(Cursor.Position))
{
switch (this.StopAanhor)
{
case AnchorStyles.Top:
this.Location = new Point(this.Location.X, 0);
break;
case AnchorStyles.Left:
this.Location = new Point(0, this.Location.Y);
break;
case AnchorStyles.Right:
this.Location = new Point(Screen.PrimaryScreen.Bounds.Width - this.Width, this.Location.Y);
break;
}
}
else
{
switch (this.StopAanhor)
{
case AnchorStyles.Top:
this.Location = new Point(this.Location.X, (this.Height - 2) * (-1));
break;
case AnchorStyles.Left:
this.Location = new Point((-1) * (this.Width - 2), this.Location.Y);
break;
case AnchorStyles.Right:
this.Location = new Point(Screen.PrimaryScreen.Bounds.Width - 2, this.Location.Y);
break;
}
}
}
internal AnchorStyles StopAanhor = AnchorStyles.None;
private void mStopAnhor()
{
if (this.Top <= 0)
{
StopAanhor = AnchorStyles.Top;
}
else if (this.Left <= 0)
{
StopAanhor = AnchorStyles.Left;
}
else if (this.Left >= Screen.PrimaryScreen.Bounds.Width - this.Width)
{
StopAanhor = AnchorStyles.Right;
}
else
{
StopAanhor = AnchorStyles.None;
}
}
private void hide_LocationChanged(object sender, EventArgs e)
{
this.mStopAnhor();
}

相关文章

  • C# 键值对数据排序代码

    C# 键值对数据排序代码

    这篇文章介绍了C# 键值对数据排序代码,有需要的朋友可以参考一下
    2013-11-11
  • C#中的委托delegate用法的示例详解

    C#中的委托delegate用法的示例详解

    这篇文章主要介绍了C#中的委托用法的示例详解。本章将由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.NET Framework 中的委托和事件、委托中方法异常和超时的处理、委托与异步编程、委托和事件对Observer 设计模式的意义。感兴趣的可以了解一下
    2020-07-07
  • C#开发Windows服务实例之实现禁止QQ运行

    C#开发Windows服务实例之实现禁止QQ运行

    这篇文章主要介绍了通过C#开发Windows服务,查杀qq进程的服务功能,需要的朋友可以参考下
    2013-10-10
  • C++中#include头文件的示例详解

    C++中#include头文件的示例详解

    在C++中,所有的文件操作,都是以流(stream)的方式进行的,fstream也就是文件流file stream。这篇文章主要介绍了C++中#include头文件,需要的朋友可以参考下
    2020-02-02
  • C#常用数据结构和算法总结

    C#常用数据结构和算法总结

    这篇文章主要介绍了C#常用数据结构和算法,这里我们总结了一些知识点,可以帮助大家理解这些概念。
    2016-06-06
  • C# SelectedIndexChanged事件详解

    C# SelectedIndexChanged事件详解

    这篇文章主要介绍了C# SelectedIndexChanged事件详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C#获取进程的主窗口句柄的实现方法

    C#获取进程的主窗口句柄的实现方法

    C#获取进程的主窗口句柄的实现方法,需要的朋友可以参考一下
    2013-04-04
  • C#实现微信红包功能

    C#实现微信红包功能

    这篇文章主要介绍了C#实现微信红包功能,使用正态分布计算红包金额,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out

    一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out

    这篇文章主要介绍了一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out,本文用浅显易懂的语言组织介绍了这些容易混淆的概念,需要的朋友可以参考下
    2015-06-06
  • c# Linq常用的小技巧

    c# Linq常用的小技巧

    这篇文章主要介绍了c# Linq常用的小技巧,文中讲解非常详细,示例代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07

最新评论