猿问
使一个无边界的形式可以移动?
当鼠标按下窗体时,是否有一种方法使窗体没有边框(FormBorderStyle设置为“None”),就像有边框一样?
繁星淼淼
浏览 222
回答 3
3回答
狐的传说
让我们不要让事情变得比他们所需要的更困难。我遇到了这么多代码片段,它们允许您拖动窗体(或其他控件)。他们中的许多人都有自己的缺点/副作用。尤其是那些让Windows认为窗体上的控件就是实际窗体的情况下。话虽如此,这是我的片段。我一直在用它。我还想指出的是,您不应该像其他人一样使用它,因为它会导致表单在某些情况下闪烁。在某些情况下也是如此。使用此更新,我没有任何闪烁的问题: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; }
0
0
0
心有法竹
另一种更简单的方法来做同样的事情。public partial class Form1 : Form{ public Form1() { InitializeComponent(); // set this.FormBorderStyle to None here if needed // if set to none, make sure you have a way to close the form! } protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == WM_NCHITTEST) m.Result = (IntPtr)(HT_CAPTION); } private const int WM_NCHITTEST = 0x84; private const int HT_CLIENT = 0x1; private const int HT_CAPTION = 0x2;}
0
0
0
随时随地看视频
慕课网APP
相关分类
C#
typedef入门问题
1 回答
我要回答