C#Winform无边框窗体鼠标拖动怎么实现?

如题所述

第1个回答  2022-12-11
在有时候我们为了实现软件的美观,我们需要把窗体的边框隐藏,但是问题也会随之而来,在属性中设置了FormBorderStyle应该为None,边框便可以隐藏,但是我们在使用软件时却无法拖动窗体,那么我们该如何解决这个问题呢。其实代码很简单,只要override WndProc方法便可。在无边框窗体的代码中加入下面的protected override void WndProc(ref Message m)方法便可。具体代码如下:\x0d\x0ausing System;\x0d\x0ausing System.Windows.Forms;\x0d\x0a\x0d\x0anamespace WindowsFormsApplication1\x0d\x0a{\x0d\x0a public partial class Form1 : Form\x0d\x0a {\x0d\x0a public Form1()\x0d\x0a {\x0d\x0a InitializeComponent();\x0d\x0a }\x0d\x0a\x0d\x0a #region 移动窗体\x0d\x0a /// \x0d\x0a /// 重写WndProc方法,实现窗体移动和禁止双击最大化\x0d\x0a /// \x0d\x0a /// Windows 消息\x0d\x0a protected override void WndProc(ref Message m)\x0d\x0a {\x0d\x0a switch (m.Msg)\x0d\x0a {\x0d\x0a case 0x4e:\x0d\x0a case 0xd:\x0d\x0a case 0xe:\x0d\x0a case 0x14:\x0d\x0a base.WndProc(ref m);\x0d\x0a break;\x0d\x0a case 0x84://鼠标点任意位置后可以拖动窗体\x0d\x0a this.DefWndProc(ref m);\x0d\x0a if (m.Result.ToInt32() == 0x01)\x0d\x0a {\x0d\x0a m.Result = new IntPtr(0x02);\x0d\x0a }\x0d\x0a break;\x0d\x0a case 0xA3://禁止双击最大化\x0d\x0a break;\x0d\x0a default:\x0d\x0a base.WndProc(ref m);\x0d\x0a break;\x0d\x0a }\x0d\x0a }\x0d\x0a #endregion\x0d\x0a }\x0d\x0a}

C#Winform无边框窗体鼠标拖动怎么实现?
在无边框窗体的代码中加入下面的protected override void WndProc(ref Message m)方法便可。具体代码如下:\\x0d\\x0ausing System;\\x0d\\x0ausing System.Windows.Forms;\\x0d\\x0a\\x0d\\x0anamespace WindowsFormsApplication1\\x0d\\x0a{\\x0d\\x0a public partial class Form1 : Form\\x0...

C#Winform无边框窗体鼠标拖动怎么实现
protected override CreateParams CreateParams{ get { const int WS_MINIMIZEBOX = 0x00020000; \/\/ Winuser.h中定义 CreateParams cp = base.CreateParams; cp.Style = cp.Style | WS_MINIMIZEBOX; \/\/ 允许最小化操作 return cp; } } 在窗体中加入上面的方法就可以。

C# winform ,如何使MDI子窗体被拖动超出父窗体边缘时,父窗体不出现滚动...
补充:好了,我自己来回答吧...最佳答案是我 不知道别人怎么做,我从父窗体的属性开始研究,结果发现只要把窗体的 AutoScrollMinSize 属性修改一下就可以了。MSDN上这样说:PrintPreviewDialog.AutoScrollMinSize 属性 获取或设置自动滚动条的最小大小。表示滚动条的最小高度和宽度的 Size,单位为像素。用于...

c# 如何按住一个控件时 让他随鼠标的移动方向移动
你可以就利用控件的这三个事件来实现鼠标拖动某个控件.如:1.新建一窗体.2.在窗体画一个button控件.3.在button控件的MouseMove,MouseDown,MouseUp三事件方法里分别写下这样的代码:bool _isPressed=false;Point _position=new Point(0,0);private void button_MouseMove(object sender,EventArgs e){ if(...

C# 无边框WinForm 点击任务栏图标时,如何实现放大缩小操作?
\/\/\/ \/\/\/ 实现点击任务栏图标显示或隐藏窗体 \/\/\/ protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams;cp.Style = cp.Style | 0x20000 ;\/\/允许最小化操作 return cp;} }

c# winform 窗体的控件突然用鼠标拖不动了
你不需要拖这么麻烦,你把光标停在你要放控件的地方,然后双击那个控件就可以咯、、、

【VS2008_C#_Winform】如何实现拖拽控件(图片)_解决后追分
} private void label1_MouseMove(object o, MouseEventArgs e){ ((Control)o).Cursor = Cursors.Arrow;\/\/设置拖动时鼠标箭头 if (e.Button == MouseButtons.Left){ Point mousePos = Control.MousePosition;mousePos.Offset(mouse_offset.X, mouse_offset.Y);\/\/设置偏移 ((Control)o).Location =...

C# winform 运行时panel 如何拖动
Point pt;private void panel1_MouseDown(object sender, MouseEventArgs e){ pt = Cursor.Position;} private void panel1_MouseMove(object sender, MouseEventArgs e){ if (e.Button == MouseButtons.Left){ int px = Cursor.Position.X - pt.X;int py = Cursor.Position.Y - pt.Y;panel1....

c# winform 控制鼠标,让鼠标在窗体的指定坐标上单击
Button_Click)加入如下代码:Cursor.Position = new Point(0 \/*x坐标*\/, 0 \/*y坐标*\/); \/\/这里是移动鼠标的代码 mouse_event(MouseEventFlag.LeftDown,0,0,0,UIntPtr.Zero);mouse_event(MouseEventFlag.LeftUp,0,0,0,UIntPtr.Zero);\/\/这里是鼠标点击的代码(左键)

C#知识|上位机项目主窗体设计思路及流程(实例)
窗口移动功能由于无边框,需通过代码实现窗体拖动,可在主窗体中关联Panel1的事件,让点击上端区域可拖动窗体。具体方法可参考《C#知识|无边框的WinForm窗体,如何拖动位置?》。总结上位机项目主窗体设计虽小,但包含了基础设计原则。复杂的项目设计思路与流程基本一致,希望这个实例能对你有所启发。如果你对...

相似回答
大家正在搜