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

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

在有时候我们为了实现软件的美观,我们需要把窗体边框隐藏,但是问题也会随之而来,在属性中设置了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

}

}

z这个功能微软是没有给直接提供的,有两种方法解决此问题,一种是你自己做图片做成上面是类似windows的界面,下面是没框框的界面,再往里面手动写入关闭的功能,另一种是自定义控件,你可以做一个这样的控件,做成你喜欢或是你自己认为合适的界面的样子,就只有这两种办法!

C# 

有两种办法

1.代码中加 form1.FormBorderStyle = FormBorderStyle.None//无边框

2.在窗本属性栏找FormBorderStyle选择none 

private void Form1_Load(object sender, EventArgs e)

    {

      this.FormBorderStyle = FormBorderStyle.None//无边框

    }

 

    private void Form1_Paint(object sender, PaintEventArgs e)

    {

      e.Graphics.DrawRectangle(Pens.DarkOliveGreen, 0, 0, this.Width - 1, this.Height - 1)

    }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7817646.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存