WinForm拖动没有标题栏窗体的方法

建立窗体的名称修改为:Form_HoverTree

文后附有源码下载。

主要代码:

 Point _HoverTreePosition;
        public Form_HoverTree()
        {
            InitializeComponent();
            _HoverTreePosition = new Point();

        }

        /// <summary>
        /// 记录鼠标起始位置 hovertree.com
        /// </summary>
        private void Form_HoverTree_MouseDown(object sender, MouseEventArgs e)
        {
            _HoverTreePosition.X = e.X;
            _HoverTreePosition.Y = e.Y;
        }

        /// <summary>
        /// 按住左键,鼠标移动窗体跟着移动 - 何问起
        /// </summary>
        private void Form_HoverTree_MouseMove(object sender, MouseEventArgs e)
        {
            if(e.Button== MouseButtons.Left)
            {
                Point h_myPosittion = MousePosition;
                h_myPosittion.Offset(-_HoverTreePosition.X, -_HoverTreePosition.Y);
                Location = h_myPosittion;
            }
        }

效果图:

可以看出,这个窗体为自定义形状的窗体,没有标题栏。具体参考:http://hovertree.com/h/bjaf/52nadvt4.htm

源码下载:

http://hovertree.com/h/bjaf/j4wwteu3.htm

转自:http://hovertree.com/h/bjaf/qewlrgqx.htm

推荐:

http://www.cnblogs.com/roucheng/p/DataGridView.html

时间: 2024-10-12 21:23:30

WinForm拖动没有标题栏窗体的方法的相关文章

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

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

winform弹出唯一窗体的方法

Form1中btn1按钮点击show出Form2,当Form2处于开启状态时,再次点击btn1不会继续弹出窗体,而是将焦点定位至已开启的Form2上:当Form2关闭后,再次点击btn1则会show出一个新的Form2: Form1: //创建一个全局集合,用来放置已经show出的窗体对象 List<Form> list = new List<Form>(); //btn1点击事件: private void button1_Click(object sender, EventAr

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#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置

C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务栏从而移动窗体 新建窗体用于测试 方法一 1.定义一个位置信息Point用于存储鼠标位置 1 private Point mPoint; 2.给窗体等控件增加MouseDown和MouseMove事件 1 /// <summary> 2 /// 鼠标按下 3 /// </summary>

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

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

C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法

对于无标题栏窗体,也就是FormBorderStyle等于System.Windows.Forms.FormBorderStyle.None的窗体,点击任务栏图标的时候,是不能象标准窗体那样最小化或还原的.把下面的代码加到你的Form实现类中,即可实现点击任务栏图标正常最小化或还原窗体. [c-sharp] view plain copy protected override CreateParams CreateParams { get { const int WS_MINIMIZEBOX =

Winform 不同窗体间方法调用总结

方法一:(Form2调用Form1中的方法:被调用名称设置在被调用窗体) 1.先在主窗口中设置主窗体可被调用的名称,设置自己的名称的[S]. 这样在其它窗体中就可以使用[S]来调用主窗体的方法了. public static Form1 s = null;         public Form1()         {             InitializeComponent();             s = this;//定义主窗体         } 2.在主窗口编写可以被调用的

在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法

本文较为详细的讲述了在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法,分享给大家供大家参考之用.具体方法如下: 在我们开发基于WCF访问方式的Winform程序的时候,一般情况下需要对界面显示的字段进行中文显示的解析.如果是硬编码进行中文显示,那么除了不方便调整及代码臃肿外,性能上没有什么问题,但是不建议这样处理:一般情况下,我们把中文对照信息放到业务类里面去统一解析,但是这样会导致每次WCF访问方式请求解析中文化的操作耗费一定的响应时间.如果使用缓存存储中文字段的对照表,那么

Winform开发中的窗体重复及灵活切换问题

Winform开发中的窗体重复及灵活显示问题 1.问题引入 在项目中需要实现主窗体点击按钮后打开子窗体,但是如果不限制的话每次点击都会打开一个新窗体,用户体验不好还浪费内存.所以这里要做的是限制每个子窗体只可以打开一次,如果打开后没有关闭子窗体或者子窗体被最小化了,就直接把已打开的窗体激活并置顶显示.同时还要满足不同的子窗体是可以共存的,也就是只能同时有一个子窗体A,子窗体B,子窗体C--但是子窗体ABC之间是可以同时存在并互相切换的. 2.解决思路 这里我的做法是写两个方法:ShowOpenF