c# 类似于千千静听的桌面停靠程序
2008-11-07 11:25
323 查看
c# 类似于千千静听的桌面停靠程序
下面是程序源代码,如有转载,请保留作者信息,谢谢。
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 LIKETTPlaryer
{
/// <summary>
/// 类似于千千静听的桌面停靠程序
/// 作者:abrahu
/// 时间:2008-11-07
/// 如有转载,请保留此项
/// </summary>
public partial class Form1 : Form
{
Point p;
int SCREEN_WIDTH;
int SCREEN_HEIGHT;
int BIND;//设置停靠容差
public Form1()
{
InitializeComponent();
Rectangle screen = Screen.GetWorkingArea(this);
SCREEN_WIDTH = screen.Width;
SCREEN_HEIGHT = screen.Height;
BIND = 20;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
p.X = e.X; p.Y = e.Y;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
int POS_X=this.Left;
int POS_Y=this.Top;
int POS_WIDTH=this.Width;
int POS_HEIGHT=this.Height;
int MOUSE_MOVE_BIND_X = e.X - p.X;
int MOUSE_MOVE_BIND_Y = e.Y - p.Y;
if (POS_X <= BIND && POS_X >= -1*BIND)//停靠在左边
{
this.Left = 0;
if (Math.Abs(MOUSE_MOVE_BIND_X) > BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
if (POS_X >= SCREEN_WIDTH - BIND - POS_WIDTH && POS_X <= SCREEN_WIDTH + BIND - POS_WIDTH)//停靠在右边
{
this.Left = SCREEN_WIDTH - POS_WIDTH;
if (Math.Abs(MOUSE_MOVE_BIND_X) > BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
if (POS_Y <= BIND && POS_Y >= -1 * BIND)//停靠在上边
{
this.Top = 0;
if (Math.Abs(MOUSE_MOVE_BIND_Y) > BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
if (POS_Y >= SCREEN_HEIGHT - BIND - POS_HEIGHT && POS_Y <= SCREEN_HEIGHT + BIND - POS_HEIGHT)//停靠在下边
{
this.Top = SCREEN_HEIGHT - POS_HEIGHT;
if (Math.Abs(MOUSE_MOVE_BIND_Y) > BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
if ((POS_X > BIND && POS_X < SCREEN_WIDTH - BIND - POS_WIDTH && POS_Y > BIND && POS_Y < SCREEN_HEIGHT - BIND - POS_HEIGHT) || POS_X < -1 * BIND || POS_X > SCREEN_WIDTH + BIND - POS_WIDTH || POS_Y > SCREEN_HEIGHT + BIND - POS_HEIGHT || POS_Y < -1 * BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
}
}
}
下面是程序源代码,如有转载,请保留作者信息,谢谢。
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 LIKETTPlaryer
{
/// <summary>
/// 类似于千千静听的桌面停靠程序
/// 作者:abrahu
/// 时间:2008-11-07
/// 如有转载,请保留此项
/// </summary>
public partial class Form1 : Form
{
Point p;
int SCREEN_WIDTH;
int SCREEN_HEIGHT;
int BIND;//设置停靠容差
public Form1()
{
InitializeComponent();
Rectangle screen = Screen.GetWorkingArea(this);
SCREEN_WIDTH = screen.Width;
SCREEN_HEIGHT = screen.Height;
BIND = 20;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
p.X = e.X; p.Y = e.Y;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
int POS_X=this.Left;
int POS_Y=this.Top;
int POS_WIDTH=this.Width;
int POS_HEIGHT=this.Height;
int MOUSE_MOVE_BIND_X = e.X - p.X;
int MOUSE_MOVE_BIND_Y = e.Y - p.Y;
if (POS_X <= BIND && POS_X >= -1*BIND)//停靠在左边
{
this.Left = 0;
if (Math.Abs(MOUSE_MOVE_BIND_X) > BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
if (POS_X >= SCREEN_WIDTH - BIND - POS_WIDTH && POS_X <= SCREEN_WIDTH + BIND - POS_WIDTH)//停靠在右边
{
this.Left = SCREEN_WIDTH - POS_WIDTH;
if (Math.Abs(MOUSE_MOVE_BIND_X) > BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
if (POS_Y <= BIND && POS_Y >= -1 * BIND)//停靠在上边
{
this.Top = 0;
if (Math.Abs(MOUSE_MOVE_BIND_Y) > BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
if (POS_Y >= SCREEN_HEIGHT - BIND - POS_HEIGHT && POS_Y <= SCREEN_HEIGHT + BIND - POS_HEIGHT)//停靠在下边
{
this.Top = SCREEN_HEIGHT - POS_HEIGHT;
if (Math.Abs(MOUSE_MOVE_BIND_Y) > BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
if ((POS_X > BIND && POS_X < SCREEN_WIDTH - BIND - POS_WIDTH && POS_Y > BIND && POS_Y < SCREEN_HEIGHT - BIND - POS_HEIGHT) || POS_X < -1 * BIND || POS_X > SCREEN_WIDTH + BIND - POS_WIDTH || POS_Y > SCREEN_HEIGHT + BIND - POS_HEIGHT || POS_Y < -1 * BIND)
{
this.Left = POS_X + MOUSE_MOVE_BIND_X;
this.Top = POS_Y + MOUSE_MOVE_BIND_Y;
}
}
}
}
}
相关文章推荐
- c# 类似于千千静听的桌面停靠程序收藏
- 如何用C#做一个类似于桌面插件的程序(转)
- 如何用C#做一个类似于桌面插件的程序
- [愚翁专栏]如何用C#做一个类似于桌面插件的程序
- C# 中实现类似于WORD EXCEL 的动态缩放效果(客户后来说程序使用能产生乐趣)
- C#编写Windows桌面应用程序使程序同时只能运行一个副本
- C#怎样使自己的程序在“显示桌面”时不最小化
- Windows服务System权限下在当前用户桌面创建快捷方式C#实例程序
- C# 如何使自己的程序在“显示桌面”时不最小化
- c#桌面程序
- C# 如何使自己的程序在“显示桌面”时不最小化
- C# mstsc 远程序桌面登录
- C# 实现类似QQ的窗体在桌面边缘停靠和隐藏
- c#通过纯代码创建桌面快捷方式、创建程序菜单项、将网页添加到收藏夹
- C# TreeView 父节点选中/不选时子节点都同步选中/不选 桌面程序
- c# 获取鼠标处窗口句柄,程序嵌入桌面
- 远程序桌面登录的.NET(C#)开发
- c# winform 桌面程序连接Access数据库,操作Access数据库,分页,ADO.NET
- C#Windows Service服务程序的安装/卸载、启动/停止 桌面客户端管理程序设计
- C# 只开启一个程序,如果第二次打开则自动将第一个程序显示到桌面