精华内容
下载资源
问答
  • 无边框窗体 移动

    2012-10-19 11:08:38
    无边框窗体移动,鼠标在窗体内任意控件上均可做到移动主窗体。代码量少,简单清晰
  • 无边框窗体移动.zip

    2019-05-15 20:53:07
    C#无边框窗体移动,和最大化,最小化。自主实现标题栏功能。
  • 文章目录1 无边框窗体移动的方法1.1 无边框窗体移动的方法 1 无边框窗体移动的方法 1.1 无边框窗体移动的方法 当我们把窗体设置为无边框后,会发现用鼠标拖动窗体时是没有反应的,我们需要在窗体实现中增加如下代码...

    1 无边框窗体移动的方法

    1.1 无边框窗体移动的方法

    当我们把窗体设置为无边框后,会发现用鼠标拖动窗体时是没有反应的,我们需要在窗体实现中增加如下代码:

    #region 窗体移动
    
    private Point mouseOff;//鼠标移动位置变量
    private bool leftFlag;//标签是否为左键
    private void Frm_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            mouseOff = new Point(-e.X, -e.Y); //得到变量的值,这里的坐标是相对于窗体左上角的值
            leftFlag = true;                  //点击左键按下时标注为true;
        }
    }
    private void Frm_MouseMove(object sender, MouseEventArgs e)
    {
        if (leftFlag)
        {
            Point mouseSet = Control.MousePosition;
            mouseSet.Offset(mouseOff.X, mouseOff.Y);  //设置移动后的位置,这里得到的是鼠标坐标相对于屏幕左上角的值
            Location = mouseSet;
        }
    }
    private void Frm_MouseUp(object sender, MouseEventArgs e)
    {
        if (leftFlag)
        {
            leftFlag = false;//释放鼠标后标注为false;
        }
    }
    
    #endregion
    

    然后在绑定窗体的如下几个事件即可:
    在这里插入图片描述


    参考资料:

    1. .NET/C#工控上位机VIP系统学习班【喜科堂互联教育】
    展开全文
  • 无边框窗体移动

    2016-01-30 21:02:21
    一、版权  文章:http://www.cnblogs.com/EasyData/archive/2008/05/05/1183696.html ... ... 拖动无边框窗体Form至桌面任何位置  首先建一个Windows应用程序  将Form1的 FormBorderStyle属性设置为
    一、版权

           文章:http://www.cnblogs.com/EasyData/archive/2008/05/05/1183696.html

           作者:mn-soft.com 

    二、摘要

         拖动无边框窗体Form至桌面任何位置

        首先建一个Windows应用程序
        将Form1的 FormBorderStyle属性设置为Noe
    三、本文大纲

           a、版权

           b、摘要

           c、本文大纲

           d、内容

    四、内容

    直接贴代码:

    复制代码
            
            Point mouseOff; // 鼠标移动位置变量

            bool leftFlag;//标签是否为左键

            privatevoid 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;
                }
            }

    复制代码

     好了,这样就可以达到,拖动窗体至桌面任何位置。

    展开全文
  • 在做窗体的时候,因为winfrom自带的最大化最小化太丑,然后自己做最大化最小化按钮 但是formBorderStyle = None 的时候 窗体的自带的可移动 不能使用了,此代码是解决无边框窗体移动问题
  • VB6.0无边框窗体移动

    2014-12-09 02:31:41
    VB6.0无边框窗体移动
  • 【WinForm】无边框窗体移动

    千次阅读 2019-04-13 11:36:58
    无边框窗体移动 当窗体设置为无边框后,比如在窗体顶部添加一个panel控件作为Top,想通过移动panel来移动窗体 方法 /// <summary> /// 无边框窗体移动 /// </summary> /// <param name=...

    无边框窗体移动

    当窗体设置为无边框后,比如在窗体顶部添加一个panel控件作为Top,想通过移动panel来移动窗体

    方法

    /// <summary>
    /// 扩展方法
    /// </summary>
    public static class Extensions
    {
    	/// <summary>
    	/// 无边框窗体移动
    	/// </summary>
    	/// <param name="control">点击该控件移动窗体</param>
    	public static void ControlMove(Form form,params Control[] control)
    	{
    	    foreach (var item in control)
    	    {
    	        Point downPoint = new Point();
    	        //按下鼠标记录点
    	        item.MouseDown += (sender, e) =>
    	        {
    	            downPoint = new Point(e.X, e.Y);
    	        };
    	        //鼠标移动时,设置窗体位置
    	        item.MouseMove += (sender, e) =>
    	        {
    	            if (e.Button == MouseButtons.Left)
    	            {
    	                form.Location = new Point(form.Location.X + e.X - downPoint.X, form.Location.Y + e.Y - downPoint.Y);
    	            }
    	        };
    	    }
    	}
    }
    

    调用

    //通过panelTop,panelLeft移动窗体
     frm.ControlMove(panelTop,panelLeft);
    
    展开全文
  • wpf无边框窗体移动和大小调整 原文:wpf无边框窗体移动和大小调整 using System; using System.Windows; using System.Windows.Interop; namespace Wpfte...
    原文: wpf无边框窗体移动和大小调整

     

    using System;
    using System.Windows;
    using System.Windows.Interop;
    
    namespace Wpftest
    {
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                this.InitializeComponent();
    
                // 在此点下面插入创建对象所需的代码。
            }
    
    
            protected override void OnSourceInitialized(EventArgs e)
            {
                base.OnSourceInitialized(e);
                HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
                if (hwndSource != null)
                {
                    hwndSource.AddHook(new HwndSourceHook(this.WndProc));
                }
            }
    
            private const int WM_NCHITTEST = 0x0084;
            private readonly int agWidth = 12; //拐角宽度
            private readonly int bThickness = 4; // 边框宽度
            private Point mousePoint = new Point(); //鼠标坐标
            public enum HitTest : int
            {
                HTERROR = -2,
                HTTRANSPARENT = -1,
                HTNOWHERE = 0,
                HTCLIENT = 1,
                HTCAPTION = 2,
                HTSYSMENU = 3,
                HTGROWBOX = 4,
                HTSIZE = HTGROWBOX,
                HTMENU = 5,
                HTHSCROLL = 6,
                HTVSCROLL = 7,
                HTMINBUTTON = 8,
                HTMAXBUTTON = 9,
                HTLEFT = 10,
                HTRIGHT = 11,
                HTTOP = 12,
                HTTOPLEFT = 13,
                HTTOPRIGHT = 14,
                HTBOTTOM = 15,
                HTBOTTOMLEFT = 16,
                HTBOTTOMRIGHT = 17,
                HTBORDER = 18,
                HTREDUCE = HTMINBUTTON,
                HTZOOM = HTMAXBUTTON,
                HTSIZEFIRST = HTLEFT,
                HTSIZELAST = HTBOTTOMRIGHT,
                HTOBJECT = 19,
                HTCLOSE = 20,
                HTHELP = 21,
            }
            protected virtual IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
            {
                switch (msg)
                {
                    case WM_NCHITTEST:
                        {
                            this.mousePoint.X = (lParam.ToInt32() & 0xFFFF);
                            this.mousePoint.Y = (lParam.ToInt32() >> 16);
    
                            //告诉系统你已经处理过该消息,不然设置为false
                            handled = true;
                            #region 测试鼠标位置
                            // 窗口左上角
                            if (this.mousePoint.Y - this.Top <= this.agWidth
                                             && this.mousePoint.X - this.Left <= this.agWidth)
                            {
                                return new IntPtr((int)HitTest.HTTOPLEFT);
                            }
                            // 窗口左下角  
                            else if (this.ActualHeight + this.Top - this.mousePoint.Y <= this.agWidth
                                             && this.mousePoint.X - this.Left <= this.agWidth)
                            {
                                return new IntPtr((int)HitTest.HTBOTTOMLEFT);
                            }
                            // 窗口右上角
                            else if (this.mousePoint.Y - this.Top <= this.agWidth
                             && this.ActualWidth + this.Left - this.mousePoint.X <= this.agWidth)
                            {
                                return new IntPtr((int)HitTest.HTTOPRIGHT);
                            }
                            // 窗口右下角
                            else if (this.ActualWidth + this.Left - this.mousePoint.X <= this.agWidth
                             && this.ActualHeight + this.Top - this.mousePoint.Y <= this.agWidth)
                            {
                                return new IntPtr((int)HitTest.HTBOTTOMRIGHT);
                            }
                            // 窗口左侧
                            else if (this.mousePoint.X - this.Left <= this.bThickness)
                            {
                                return new IntPtr((int)HitTest.HTLEFT);
                            }
                            // 窗口右侧
                            else if (this.ActualWidth + this.Left - this.mousePoint.X <= this.bThickness)
                            {
                                return new IntPtr((int)HitTest.HTRIGHT);
                            }
                            // 窗口上方
                            else if (this.mousePoint.Y - this.Top <= this.bThickness)
                            {
                                return new IntPtr((int)HitTest.HTTOP);
                            }
                            // 窗口下方
                            else if (this.ActualHeight + this.Top - this.mousePoint.Y <= this.bThickness)
                            {
                                return new IntPtr((int)HitTest.HTBOTTOM);
                            }
                            else // 窗口移动(也可在窗体MouseLeftButtonDown事件中调用DragMove()方法),双击最大化,所有剩余鼠标操作映射到标题栏
                            {
                                return new IntPtr((int)HitTest.HTCAPTION);
                            }
                            #endregion
                        }
                }
                return IntPtr.Zero;
            }
        }
    }


    弊端 窗体 中控件 事件 失效

    posted on 2018-10-21 13:51 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/9824822.html

    展开全文
  • winform无边框窗体移动(效果不错)

    热门讨论 2011-01-08 20:48:53
    winform无边框窗体移动——内含通用处理类,一行代码调用即可实现效果!
  • 拖动无边框窗体Form至桌面任何位置,有需要的朋友可以参考一下
  • 1.去边框 : ...2 //C#无边框窗体移动 将每个事件跟按钮进行关联 private System.Drawing.Point mouseOff;//鼠标移动位置变量 private bool leftFlag;//标签是否为左键 private void frmCoordina...
  • C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务栏从而...
  • 实现无边框窗体移动和最小化、关闭功能,窗体的移动使用2种方法,其中有一种会造成在拖动窗体时会出现窗体重叠的情况。
  • c# winform 无边框窗体 移动办法 一.设置FormBorderStyle为None,则 窗体是 无法被拖动的。 二.若要拖动可通过重写OnMouseMove方法或者MouseDown、MouseUp、MouseMove方法 1.方法一:重写OnMouseMove 以下是代码 ...
  • C#开发winform窗口实现无边框移动 效果展示: 教程: 创建窗体,选中窗体属性设置BorderStyle = None, 这样窗体就是...#region 无边框窗体移动 // 鼠标按下 private bool isMouse = false; // 鼠标是否按下 ...
  • Qt无边框窗体移动和缩放

    千次阅读 2017-05-27 16:08:02
    设置后的窗体是不可以移动、拉伸的,所以为了让无边框窗体移动就需要自己重写一些事件实现。 效果如下 图1 拖拽窗体 (注:当窗体左上角、左边、上边拖拽时会有抖动,有些电脑却没有这种情况。。具体为啥我也不...
  • 无边框窗体移动: //窗体移动API [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage(IntPtr hwnd, int wMsg, int ...
  • C#无边框窗体移动

    2019-12-10 16:23:31
    拖动无边框窗体 相信大家都有遇到过这个问题,将winform窗体BorderStyle设置为None时,窗体是无法移动的,解决这个问题可以参考下面代码; 首先建立一个Win32类文件 命名空间引用如下: using System.Runtime....
  • C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务栏从而...
  • C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务栏从而...
  • C#中无边框窗体移动

    2019-09-28 11:27:46
    拖动无边框窗体Form至桌面任何位置首先建一个Windows应用程序将Form1的 FormBorderStyle属性设置为Noe PointmouseOff;//鼠标移动位置变量boolleftFlag;//标签是否为左键privatevoidForm1_MouseDown(objectsender,...
  • #region 窗体移动 private Point mouseOff;//鼠标移动位置变量 private bool leftFlag;//标签是否为左键 private void Frm_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,386
精华内容 954
关键字:

无边框窗体的移动