Winform窗体拖动

private void panelControl1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                currentFormWidth = this.Width;
                currentFormWidth = this.Height;
                isMouseDown = true;
                mouseOffset = new Point(MousePosition.X - this.Location.X, MousePosition.Y - this.Location.Y);
                this.Cursor = Cursors.SizeAll;
            }
        }

        private void panelControl1_MouseEnter(object sender, EventArgs e)
        {
            isMouseEnter = true;
        }

        private void panelControl1_MouseLeave(object sender, EventArgs e)
        {
            Point p = MousePosition;
            if (p.X - 10 <= this.Left || p.X + 10 >= this.Left + currentFormWidth || p.Y - 10 <= this.Top || p.Y + 10 >= this.Bottom)
            {
                isMouseEnter = false;
            }
        }

        private void panelControl1_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown == true)
            {
                Point old = this.Location;
                this.Location = getMiniBallMoveLocation();
            }
        }

        private void panelControl1_MouseUp(object sender, MouseEventArgs e)
        {
            isMouseDown = false;
            this.Cursor = Cursors.Default;
        }

        private Point getMiniBallMoveLocation()
        {
            int x = MousePosition.X - mouseOffset.X;
            int y = MousePosition.Y - mouseOffset.Y;
            return new Point(x, y);
        }

原文地址:https://www.cnblogs.com/Xamarin-Oz/p/11254386.html

时间: 2024-11-04 03:45:59

Winform窗体拖动的相关文章

winform 窗体拖动

winform 由于自带的界面太丑,有时候就想着去掉标题栏,自己写,自己做UI 但是发现没法拖动了,或者,有时候我们也想让整个窗体都能够随着鼠标进行拖动,来来来,看下面 #region 让窗口可以随意拖动[DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage

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

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

WinForm窗体嵌入

一.在winform窗体上添加两个控件 1.容器>Panel 2.添加 SideBar.dll (下载链接:http://pan.baidu.com/s/1o6qhf9w) (1)将SideBar.dll放到SideBar控件\bin\Debug下 (2)拖动SideBar.dll到工具箱>常规 选项卡内 3.实现效果如下图 注:窗体左边是SideBar控件,右边是Panel容器 二.后台代码 (1)sideBar1_Load事件 sideBar1.AddGroup("小组名&quo

使用控制台调试WinForm窗体程序

1.程序代码结构 2.Win32DebuggerHelper.cs using System.Runtime.InteropServices; /* TODO:使用方法 Win32.AllocConsole(); Console.WriteLine(@"我是调试信息:目前已经运行到加载事件中"); */ namespace WinFormUseConsoleToTestProgramDemo { /// <summary> /// 通过控制台Console调试WinForm

winform窗体中查找控件

private RichTextBox FindControl()        { RichTextBox ret = null;            try            {                Control[] controls = Application.OpenForms["MainForm"].Controls.Find("txtContent", false);                if (controls != nul

c#Winform窗体 自动生成EXCEL并可以插入数据

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data; using System.Windows.Forms; using System.Data.OleDb;using System.IO;using System.Drawing;using System.Linq;using System.Text; namespace EPAS.f06PreData//自己命名

C#使用事件方式Winform窗体之间传值

[摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTransValueDemoByDelOrEvent.git C#winform窗体间传值,三种方法示例,注释详细.使用方法:使用vs2013打开编译运行即可: 工程中总共介绍了三种方法:###方法1:通过保存对象的引用调用其方法实现对子窗体的控制:###方法2:通过委托,在子窗体显示之前,为委托赋值,关

WPF加载Winform窗体时 报错:子控件不能为顶级窗体

一.wpf项目中引用WindowsFormsIntegration和System.Windows.Forms 二.Form1.Designer.cs 的 partial class Form1 设置为:public partial class Form1 三.代码如下: XXXX.Form1 Zhuwindow = new XXXX.Form1(); Zhuwindow.TopLevel = false; Zhuwindow.FormBorderStyle = System.Windows.Fo

.NET vs2010中使用IrisSkin2.dll轻松实现winForm窗体换肤功能

.NET vs2010中使用IrisSkin2.dll轻松实现winForm窗体换肤功能 转载▼ 大家好,从事c-s开发的C#程序员经常为winForm的界面设计苦恼,笔者曾经也深受“美工神话”的危害,如今提到美工,界面布局设计就开始蛋疼…. 所幸的是,笔者无意间接触到了一些比较可爱的第三方控件,可以为我们程序员省掉很多美工上面的麻烦…在陆续的博客中我会为大家介绍,今天我们的主题是:IrisSkin2.dll IrisSkin2.dll是一款很不错的免费皮肤控件,利用它可以轻松的实现winFor