C# 实现winform自动悬浮

winform自动悬浮,主要代码如下:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8
  9 namespace SupremeWindowsForms
 10 {
 11     public partial class Form : System.Windows.Forms.Form
 12     {
 13         #region Fields and Properties
 14         /// <summary>
 15         /// 锚定位置
 16         /// </summary>
 17         internal AnchorStyles StopAanhor = AnchorStyles.None;
 18
 19         /// <summary>
 20         /// 计时器
 21         /// </summary>
 22         public Timer TimerAnchor { get; set; }
 23
 24         #endregion
 25
 26         #region Methods
 27         public Form()
 28         {
 29             InitializeComponent();
 30         }
 31
 32         /// <summary>
 33         /// 控制窗体隐藏与复现
 34         /// </summary>
 35         /// <param name="sender"></param>
 36         /// <param name="e"></param>
 37         private void Time_Tick(object sender, EventArgs e)
 38         {
 39             if (this.Bounds.Contains(Cursor.Position))
 40             {
 41                 switch (this.StopAanhor)
 42                 {
 43                     case AnchorStyles.Top:
 44                         //窗体在最上方隐藏时,鼠标接触自动出现
 45                         this.Location = new Point(this.Location.X, 0);
 46                         break;
 47                     //窗体在最左方隐藏时,鼠标接触自动出现
 48                     case AnchorStyles.Left:
 49                         this.Location = new Point(0, this.Location.Y);
 50                         break;
 51                     //窗体在最右方隐藏时,鼠标接触自动出现
 52                     case AnchorStyles.Right:
 53                         this.Location = new Point(Screen.PrimaryScreen.Bounds.Width - this.Width, this.Location.Y);
 54                         break;
 55                 }
 56             }
 57             else
 58             {
 59                 //窗体隐藏时在靠近边界的一侧边会出现2像素原因:感应鼠标,同时2像素不会影响用户视线
 60                 switch (this.StopAanhor)
 61                 {
 62                     //窗体在顶部时时,隐藏在顶部,底部边界出现2像素
 63                     case AnchorStyles.Top:
 64                         this.Location = new Point(this.Location.X, (this.Height - 2) * (-1));
 65                         break;
 66                     //窗体在最左边时时,隐藏在左边,右边边界出现2像素
 67                     case AnchorStyles.Left:
 68                         this.Location = new Point((-1) * (this.Width - 2), this.Location.Y);
 69                         break;
 70                     //窗体在最右边时时,隐藏在右边,左边边界出现2像素
 71                     case AnchorStyles.Right:
 72                         this.Location = new Point(Screen.PrimaryScreen.Bounds.Width - 2, this.Location.Y);
 73                         break;
 74                 }
 75             }
 76         }
 77
 78         /// <summary>
 79         /// 设置窗体位置的类型
 80         /// </summary>
 81         private void SetAnchor()
 82         {
 83             if (this.Top <= 0)
 84             {
 85                 StopAanhor = AnchorStyles.Top;
 86             }
 87             else if (this.Left <= 0)
 88             {
 89                 StopAanhor = AnchorStyles.Left;
 90             }
 91             else if (this.Left >= Screen.PrimaryScreen.Bounds.Width - this.Width)
 92             {
 93                 StopAanhor = AnchorStyles.Right;
 94             }
 95             else
 96             {
 97                 StopAanhor = AnchorStyles.None;
 98             }
 99         }
100         #endregion
101
102         #region Events
103         private void Form_LocationChanged(object sender, EventArgs e)
104         {
105             SetAnchor();
106         }
107
108         private void Form_Load(object sender, EventArgs e)
109         {
110             TimerAnchor = new Timer { Interval = 100 };
111             TimerAnchor.Tick += Time_Tick;
112             //timer1.Tick += Timer1_Tick;
113             TimerAnchor.Start();
114         }
115         #endregion
116    }
117 }

原文地址:https://www.cnblogs.com/1175429393wljblog/p/12119315.html

时间: 2024-11-10 13:01:02

C# 实现winform自动悬浮的相关文章

测试winform自动悬浮

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms; namespace WinForm{ public partial class Form

C#/winform 自动触发鼠标、键盘事件

要在C#程序中触发鼠标.键盘事件必须要调用windows函数. 一.鼠标事件的触发 1.引用windows函数mouse_event /// <summary> /// 鼠标事件 /// </summary> /// <param name="flags">事件类型</param> /// <param name="dx">x坐标值(0~65535)</param> /// <param

一句话知识:如何解决winform自动缩放产生的布局问题.

转自http://www.cnblogs.com/KenBlove/articles/1281823.html有时候你会发现本来好好的WinForm程序在别的机器上显示的尺寸就不对了.这些问题主要发生在背景图片.图片框.窗口布局上.那么那就很可能是因为WinForm的自动放缩功能. 因为不同语言的系统使用不同的缺省字体,相同字体的系统也可能使用不同的DPI(字符的每英寸点数),传统的Win32程序在不同的系统上经常遇到文本显示不全的问题..NET的WinForm提供了自动放缩的功能来试图解决该问

分享一个客户端程序(winform)自动升级程序,思路+说明+源码

做winform的程序,不管用没用过自动更新,至少都想过自动更新是怎么实现的. 我这里共享一个自动更新的一套版本,给还没下手开始写的人一些帮助,也希望有大神来到,给指点优化意见. 本初我是通过socket来传输文件的,后来因为传大文件出现异常,前期又没有定义比较好的协议,后来就改用webservices了. 自动更新分三个部分,服务端(webservice服务,配置与更新),配置客户端(或叫发布客户端),客户端(主程序) 服务端:         ConfigServer.asmx 因为代码共享

winform自动更新程序实现

一.问题背景 本地程序在实际项目使用过程中,因为可以操作电脑本地的一些信息,并且对于串口.OPC.并口等数据可以方便的进行收发,虽然现在软件行业看着动不动都是互联网啊啥的,大有Web服务就是高大上的感觉,但是作为本地的应用还是有着非常重要的位置,特别是在制造业工厂里,车间里相关的程序. 抛开一切业务上的功能不谈,本地程序一直比较诟病的地方就是在于软件的更新上,由于程序都在客户端电脑上运行,当需要更新的时候,就不得不由专门的实施人员过去,部署更新,无形中增加项目成本,SO,对于c/s程序的自动更新

winform 自动升级

自动升级系统OAUS的设计与实现(续) (附最新源码) http://www.cnblogs.com/zhuweisky/p/4209058.html

winform自动更新并实现文件的批量异步下载

public partial class update : Form    {        private WebClient client;        int downfilenum = 0; //已下载文件数        int downlistnum = 0;//总下载文件数        List<string> list;        private string URl;        private string fileName;        private con

winform自动保存属性变更

1.每次变更都保存 Properties.Settings.Default.PropertyChanged += Default_PropertyChanged; private void Default_PropertyChanged(object sender, PropertyChangedEventArgs e) { Properties.Settings.Default.Save(); } 2. 退出时保存 Application.ApplicationExit += new Even

20150506—WinForm自动生成按钮&amp;按钮拖动

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace xiaojian2 { public partial class Form1 : Form { public F