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

如题所述

在有时候我们为了实现软件的美观,我们需要把窗体的边框隐藏,但是问题也会随之而来,在属性中设置了FormBorderStyle应该为None,边框便可以隐藏,但是我们在使用软件时却无法拖动窗体,那么我们该如何解决这个问题呢。其实代码很简单,只要override WndProc方法便可。在无边框窗体的代码中加入下面的protected override void WndProc(ref Message m)方法便可。具体代码如下:
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

#region 移动窗体
/// <summary>
/// 重写WndProc方法,实现窗体移动和禁止双击最大化
/// </summary>
/// <param name="m">Windows 消息</param>
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x4e:
case 0xd:
case 0xe:
case 0x14:
base.WndProc(ref m);
break;
case 0x84://鼠标点任意位置后可以拖动窗体
this.DefWndProc(ref m);
if (m.Result.ToInt32() == 0x01)
{
m.Result = new IntPtr(0x02);
}
break;
case 0xA3://禁止双击最大化
break;
default:
base.WndProc(ref m);
break;
}
}
#endregion
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

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中怎么实现无边框窗体的拖动、最大化、最小化以及关闭。_百度...
1、先找到微软窗体自带的属性里,把属性formborderstyle设置成NONE,这样就可以实现窗体无边框;2、最大化、最小化及关闭按钮,你可以通过增加按钮或图片类的控件来实现,主要看你自己界面的风格而定,在相应的按钮单击事件下,编写代码来实现相应的功能。还有一种办法就是:利用给窗体做皮肤的办法,不过...

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

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

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);\/\/这里是鼠标点击的代码(左键)

相似回答
大家正在搜