【Reproduce】 C#中实现拖动无边框Form窗体

首先建一个Windows应用程序

将Form1的 FormBorderStyle属性设置为Noe

主要是在Form1窗体触发三个事件:Form4_MouseDown,Form4_MouseMove,Form4_MouseUp

代码如下:

     
public partial class Form1 : Form
{
        Point mouseOff;                          //鼠标移动位置变量
        bool leftFlag;                               //标签是否为左键

        public Form1()
        {
            InitializeComponent();

        }}

  

//用代码设置窗体的起始位置

private void Form_Load(object sender, System.EventArgs e)
{
     this.Left=(int)((Screen.PrimaryScreen.Bounds.Width-this.Width)/2);
     this.Top=(int)((Screen.PrimaryScreen.Bounds.Height-this.Height)/2);
}

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Left)
   {
    mouseOff = new Point(-e.X, -e.Y); //得到变量的值
    leftFlag = true;                              //点击左键按下时标注为true;
  }
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
   if (leftFlag)
   {
      Point mouseSet = Control.MousePosition;
       mouseSet.Offset(mouseOff.X, mouseOff.Y); //设置移动后的位置
      Location = mouseSet;
  }
}

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
   if (leftFlag)
   {
     leftFlag = false;//释放鼠标后标注为false;
 }
}
}
时间: 2024-12-12 11:48:59

【Reproduce】 C#中实现拖动无边框Form窗体的相关文章

141107●Winform拖动无边框窗口、播放音频、启动外部exe程序

鼠标拖动无边框窗口 1. //鼠标拖动 Point downpoint = new Point(); //事件,鼠标按下,获取当前坐标 private void panel1_MouseDown(object sender, MouseEventArgs e) { downpoint.X = -e.X; downpoint.Y = -e.Y; } //事件,鼠标移动,赋值新坐标 private void panel1_MouseMove(object sender, MouseEventArgs

C# WinForm 拖动无边框窗体 改变无边框窗体尺寸

经常遇到这种情况.窗体的边框去掉了.然后种种问题就出来了:不能拖动.不能改变窗体大小.不能......当然.肯定有解决方案滴*^_^*今天的目标就是:可以直接拖动没有边框的窗体.可以直接拉拽窗体改变其大小.制作步骤如下:新建WinForm程序.添加一个启动的窗体.将其边框设置为None.进入代码编辑界面.定义如下常量值: const int Guying_HTLEFT = 10; const int Guying_HTRIGHT = 11; const int Guying_HTTOP = 12

winform 可拖动无边框窗体解决办法

方法一:通过重载消息处理实现. 鼠标的拖动只对窗体本身有效,不能在窗体上的控件区域点击拖动 /// <summary> /// 通过重载消息处理实现.重写窗口过程(WndProc),处理一些非客户区消息(WM_NCxxxx), /// C#中重写窗口过程不用再调用SetWindowLong API了,直接overide一个WndProc就可以了,不用声明api函数 /// 鼠标的拖动只对窗体本身有效,不能在窗体上的控件区域点击拖动 /// </summary> /// <pa

C# 无边框异型窗体制作

我是一个C#的初学者 只要涉及到windows窗体编程 都希望窗体的外观比较好看 不是系统默认的那样 对于C# 更改窗体外观感觉并不那么轻松 更改窗体外观涉及到使用GDI+ 我所知道的有两种方法: 有系统边框的窗体  处理窗体的Paint方法,在paint方法中 参数e.Graphics属性将返回一个对象 用来作画  但是这个画布的区域是窗体的客户区 所以无法修改到窗体的标题栏 边框等位置的.要更改标题栏只有获取整个窗口的句柄 这样创建的画布是整个窗体区域 但是对于我这样的初学者来说 对于句柄

猎豹MFC、--拖动无边框窗体

以上窗口为无边框窗体: 在窗口属性中  去除窗口边框: 首先定义两个变量: 在构造函数中进行初始化: 因为要按下鼠标左键才能进行拖动,所以增加鼠标左键消息: 小技巧: 捕获鼠标  放置鼠标跑出当前窗口: 增加移动鼠标消息: 鼠标按下去的小时函数如下: 增加鼠标离开弹起的消息: 鼠标移动的消息函数实现如下: 鼠标当前位置减去鼠标开始的位置为鼠标移动的距离,为减少窗口的闪烁,让距离大于两个像素的才让他移动,因为不停的移动就会有明显的闪烁感. GetWIndowsRect()获取窗口原来的位置. Of

winform拖动无边框窗体

这个无边框拖动船体,代码很少,却总是记不住,于是就在网上搜了这段代码,记录一下,省的再忘 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;  namespace WindowsApplication1 {     pub

c#无边框异形窗体制作

下面是最终效果:   这就是一个无边框窗体 可以注意到它的外观 四个角是圆的 有控制按钮 并且还可以拖拽,当鼠标移动到窗体的四个角和边缘的时候可以拖拽大小 这个窗体没有标题栏和边框的限制 控件可以放在窗体上任何地方 下面就是直奔主题了: 先说一说制作这个窗体的思路(窗体集成自System.Windows.Forms.Form): 1.设置FormBorderStyle属性为none 让它成为一个无边框窗体 2.设置窗体的Region属性 该属性设置窗体的有效区域 而我们把窗体的有效区域设置为圆角

Delphi中拖动无边框窗口的5种方法

1.MouseMove事件中加入: // ReleaseCapture;// Perform(WM_SYSCOMMAND, $F017 , 0); 2.MouseDown事件中加入: // POSTMESSAGE(Self.Handle,WM_LBUTTONUP,0,0);// POSTMESSAGE(Self.Handle,274,61458,0); 3.MouseDown事件中加入: // ReleaseCapture;// Perform(WM_SYSCOMMAND, $F012, 0);

C#拖动无边框窗体(窗体上有容器遮挡)

[DllImport("user32.dll")]         public static extern bool ReleaseCapture();         [DllImport("user32.dll")]         public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);         public const int WM_S