c#轻松实现磁性窗口【原】
/// 磁性窗体函数
/// </summary>
/// <param name="form">窗体控件(一般传this即可)</param>
/// <param name="space">自定义的与屏幕边缘的距离</param>
/// <param name="isWorkingArea">是否在屏幕工作区进行该操作(true表示不包括任务栏,false则包括整个屏幕的范围)</param>
public void Form_Welt(Control form, int space, bool isWorkingArea)
{
//获取窗体的左上角的x,y坐标
int x = form.Location.X;
int y = form.Location.Y;
int sW = 0;
int sH = 0;
if (isWorkingArea)
{
//获取屏幕的工作区(不包括任务栏)的宽度和高度
sW = Screen.PrimaryScreen.WorkingArea.Width;
sH = Screen.PrimaryScreen.WorkingArea.Height;
}
else
{
//获取整个屏幕(包括任务栏)的宽度和高度
sW = Screen.PrimaryScreen.Bounds.Width;
sH = Screen.PrimaryScreen.Bounds.Height;
}
//如果窗体的左边缘和屏幕左边缘的距离在用户定义的范围内,则执行左贴边
if ((x <= space && x > 0) || (Math.Abs(x) <= space && x < 0)) //Math.Abs(x)是取绝对值
{
form.Location = new Point(0, y);
}
//如果窗体的上边缘和屏幕上边缘的距离在用户定义的范围内,则执行上贴边
if ((y <= space && y > 0) || (Math.Abs(y) <= space && y < 0))
{
form.Location = new Point(x, 0);
}
//窗体右边缘跟屏幕右边缘的距离
int rightW = sW - form.Right;
//窗体下边缘跟屏幕下边缘的距离
int bottomW = sH - form.Bottom;
//判断右边的情况
if ((rightW <= space && form.Right < sW) || (Math.Abs(rightW) <= space && rightW < 0))
{
form.Location = new Point(sW - form.Width, y);
}
//判断下边的情况
if ((bottomW <= 10 && form.Bottom < sH) || (Math.Abs(bottomW) <= space && bottomW < 0))
{
form.Location = new Point(x, sH - form.Height);
}
}
看到千千静听的窗口可以在接近屏幕边缘时贴在边缘上觉得不错,自己也有这个需要,所以写了这个方法,测试了感觉还蛮不错的,哈哈~
使用的时候只要在想应用的窗体的Form_Move(object sender,EventAges e)事件里面调用即可
ps:不过有时窗体可能会比较闪,这个可能是代码还有待改善,或者是在Form_Move事件里面来调用不大合适,反正功能是实现了,要是哪位有更好的方法,欢迎回复交流一下啊~
转载于:https://www.cnblogs.com/linyc/archive/2009/08/16/1547320.html
c#轻松实现磁性窗口【原】相关推荐
- c#轻松实现磁性窗口
/// <summary> /// 磁性窗体函数 /// </summary> /// <param name="form">窗体控件(一般传t ...
- 小天带你轻松解决Mybatis延迟加载原理源码问题
Mybatis延迟加载原理源码解析 Mybatis基本结构图 由上图可以知道MyBatis延迟加载主要使⽤:JavassistProxyFactory,CgliProxyFactoryb实现类.这两种 ...
- window.open打开新窗口原页面出现[object window]解决办法
问题描述:网站中在火狐浏览器中打开新的网页后原来的网页就会出现object window 页面一片空白 看了代码用的是下面的: 解决办法: 直接在打开新网页中加上返回值void(0) 就能完美解决 a ...
- python怎么计算圆_python根据圆的参数方程求圆上任意一点的坐标
from math import cos, sin,pi x0,y0=0,0 r=4.0 angle=-25 x1 = x0 + r * cos(angle * pi / 180) y1 = y0 + ...
- c语言窗口如何加背景图片,MFC积累---关于设置背景图片、背景颜色插入背景音乐...
第二种方法是把声音文件加入到资源中,然后从资源中播放声音.Visual C++支持WAVE型资源,用户在资源视图中单击鼠标右键并选择Import命令,然后在文件选择对话框中选择The Microsof ...
- robotframwork的WEB功能测试(一)—切换window窗口
selenium2library提供的切换到新窗口的关键字,只有select window,而且也只能根据title.name.url去定位.如下图所示,明显在实际使用中是不够的. 所以这里总结了一下 ...
- Linux基本C编程fork、signal、time以及用printf在终端打印一个GUI窗口 - 使用cygwin
1 fork, vfork示例 创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork(): vfork创建新进程的主要目的在于调用exec函数执行另外的一个新程序,在没调用exec或 ...
- java如何阻塞父窗体,java图形设计,窗口阻塞的问题。
转自:http://zhidao.baidu.com/question/354970135.html 打开一个java窗口(原JFrame),里面有个按钮,点击后出现另一个窗口(新JFrame),如何 ...
- Windows核心编程_窗口蒙版效果
首先先看一下界面效果: 遮罩窗口: 模糊模态窗口: 保留特定控件 模糊保留特定控件: 遮罩+模糊效果: 遮罩模态效果: 怎么样是不是很炫酷,非常适合在提示用户新信息或者其它需要模态窗口时候展现的效果, ...
最新文章
- BCE或能成为BCH的一个侧链
- 人工智能:模型与算法 之 启发式搜索
- STM32速度---网页讲解
- 【线上分享】基于人眼主观视觉的画质评价与提升
- php xmlhttprequest,DOM XMLHttpRequest
- 分享一下:推荐一个网站,练习CSS3
- day15 java接口的基础语法
- python3读取txt文件数字签名_hash文件-对文件进行数字签名
- python上下文管理器ContextLib及with语句
- python+selenium+pycharm安装
- Word课程笔记(秋叶系列课程)
- teradata ttu_SQL语句笔记之Teradata
- C# 创建XML文件
- 如何利用网站优化给网站引流做营销
- 你不知道的Windows小技巧~~
- Nginx+FFmpeg rtsp转flv实时预览
- svn: E170001
- 初学者Cocos(TypeScritp)简单实现2048游戏
- 医学影像组学之病理切片分割(免费训练数据,标注数据,免费代码,免费教程)三天走完影像组学全部流程
- oscp——Hell: 1