本文介绍了使无边框形式可移动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法让没有边框的表单(FormBorderStyle 设置为none")在表单上点击鼠标时可以移动,就像有边框一样?
Is there a way to make a form that has no border (FormBorderStyle is set to "none") movable when the mouse is clicked down on the form just as if there was a border?
推荐答案
这个 CodeProject 上的文章详细介绍了一种技术.基本上归结为:
This article on CodeProject details a technique. Is basically boils down to:
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool ReleaseCapture();
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
从窗口管理器的角度来看,这本质上完全与抓取窗口的标题栏相同.
This essentially does exactly the same as grabbing the title bar of a window, from the window manager's point of view.
这篇关于使无边框形式可移动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!