C# WinForm设置窗口无边框、窗口可移动、窗口显示在屏幕*、控件去边框

时间:2022-05-17 16:16:01

1)窗口去除边框

在组件属性中FormBorderStyle设为None

2)窗口随着鼠标移动而动

添加引用using System.Runtime.InteropServices;

在初始化控件{InitializeComponent();}代码后添加

         [DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
bool beginMove = false;//初始化鼠标位置
int currentXPosition;
int currentYPosition;
     //获取鼠标按下时的位置
     private void QRCode_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
beginMove = true;
currentXPosition = MousePosition.X;//鼠标的x坐标为当前窗体左上角x坐标
currentYPosition = MousePosition.Y;//鼠标的y坐标为当前窗体左上角y坐标
}
}
     //获取鼠标移动到的位置
private void QRCode_MouseMove(object sender, MouseEventArgs e)
{
if (beginMove)
{
this.Left += MousePosition.X - currentXPosition;//根据鼠标x坐标确定窗体的左边坐标x
this.Top += MousePosition.Y - currentYPosition;//根据鼠标的y坐标窗体的顶部,即Y坐标
currentXPosition = MousePosition.X;
currentYPosition = MousePosition.Y;
}
}
     //释放鼠标时的位置
private void QRCode_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
currentXPosition = ; //设置初始状态
currentYPosition = ;
beginMove = false;
}
}

3)窗口居中显示

利用C# Form中的StartPosition属性CenterScreen将界面显示在屏幕*

若是用代码实现,显示窗体前,应设置此属性,可在调用Show()或是ShowDialog()方法之前或在窗体构造函数中设置此属性,不要在load()事件中改变此属性,不起作用。

4)界面大小固定

AutoSizeMode有GrowOnly和GrowAndShrink两种属性

GrowOnly:生成的窗体可用鼠标调节

GrowAndShrink:生成的窗体不可用鼠标调节

5)控件设为透明,无边框

将控件的FlatStyle设为flat,为解决内边框出现,将FlatAppearance下的BorderSize设为0.