📜  c# formformborderstyle none move - C#(1)

📅  最后修改于: 2023-12-03 14:59:40.074000             🧑  作者: Mango

C#中的FormBorderStyle.None属性和移动窗体

简介

在C#中,我们通常使用Windows Forms来创建GUI应用程序。其中的Form类为我们提供了一种简便的方式来创建和管理窗体。在窗体的设计中,窗体的边框及移动功能是常见的需求,本篇文章将着重介绍C#中的FormBorderStyle.None属性及如何通过代码实现移动窗体的操作。

FormBorderStyle.None属性

FormBorderStyle是Form类中的一个属性,用于控制窗体的边框样式。其中,None表示窗体没有边框。

通过将FormBorderStyle属性设置为None,我们可以去除窗体的边框,这样可以实现更自由、定制化的窗体设计。

例如,在使用Visual Studio创建一个新的Windows Forms应用程序项目后,默认生成的Form窗体上是有标题栏和边框的。我们可以通过以下代码将边框设置为None:

this.FormBorderStyle = FormBorderStyle.None;

代码片段中的this指代当前的窗体实例,FormBorderStyle则是窗体的边框样式属性。

移动窗体

默认情况下,在Windows Forms中,我们可以通过鼠标按住窗体的标题栏来拖动窗体。但是,将边框设置为None后,窗体将失去默认的拖动功能。

为了实现窗体的移动,我们需要手动编写相关的代码。在鼠标按下、移动和松开的事件中,我们可以利用MouseEventArgs的相关属性获取鼠标操作的坐标,通过修改窗体的Location属性来实现窗体的移动。

以下是一个简单的示例代码:

private bool mouseDown;
private Point lastLocation;

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    mouseDown = true;
    lastLocation = e.Location;
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (mouseDown)
    {
        this.Location = new Point(
            (this.Location.X - lastLocation.X) + e.X, (this.Location.Y - lastLocation.Y) + e.Y);
        this.Update();
    }
}

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
    mouseDown = false;
}

在以上代码中,我们使用了mouseDownlastLocation两个变量来跟踪鼠标按下和释放的状态,以及鼠标最后的位置。Form1_MouseDown事件在鼠标按下时触发,记录下鼠标的位置。Form1_MouseMove事件在鼠标移动期间触发,根据鼠标坐标的变化修改窗体的位置。最后,Form1_MouseUp事件在鼠标释放时触发,将mouseDown状态重置。

请确保将以上三个事件与相应的窗体事件绑定,例如:

this.MouseDown += new MouseEventHandler(Form1_MouseDown);
this.MouseMove += new MouseEventHandler(Form1_MouseMove);
this.MouseUp += new MouseEventHandler(Form1_MouseUp);
结论

通过使用FormBorderStyle.None属性,我们可以去除C#中窗体的边框。同时,通过编写一些简单的代码,我们可以实现窗体的移动功能。使用这些特性,程序员可以更加自由地设计和定制化GUI应用程序的窗体。