如何在C#Net中移动表单?

如何在C#Net中移动表单?,c#,.net,winforms,C#,.net,Winforms,谢谢你之前对我问题的回答。 您可以看到以下链接 现在我面临另一个问题。 当我将窗体的边框样式更改为“无”时,我无法像真实窗体那样移动窗体。 它很稳定,任何地方都不能动 在Windows中,窗体的正常边框样式可以移动到任何位置。 但我想在borderstyle的none属性中这样移动。 我该怎么做? 如果可以,请告诉我。 谢谢您抽出时间。:) 看看本教程: 以下是它的要点: using System.Runtime.InteropServices; public const int WM_NC

谢谢你之前对我问题的回答。 您可以看到以下链接

现在我面临另一个问题。 当我将窗体的边框样式更改为“无”时,我无法像真实窗体那样移动窗体。 它很稳定,任何地方都不能动

在Windows中,窗体的正常边框样式可以移动到任何位置。 但我想在borderstyle的none属性中这样移动。 我该怎么做? 如果可以,请告诉我。
谢谢您抽出时间。:)

看看本教程:

以下是它的要点:

using System.Runtime.InteropServices;

public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;

[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("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);
    }
}

回答得好@七-如果“movable”表单包含您希望能够用鼠标抓取的控件,那么您还需要使用Gabriel编写的处理程序处理这些控件MouseMove/MouseDown/MouseUp事件。
public class AppFormBase : Form
{   
    public Point downPoint = Point.Empty;

    protected override void OnLoad(EventArgs e)
    {
        if (FormBorderStyle == System.Windows.Forms.FormBorderStyle.None)
        {
            MouseDown += new MouseEventHandler(AppFormBase_MouseDown);
            MouseMove += new MouseEventHandler(AppFormBase_MouseMove);
            MouseUp   += new MouseEventHandler(AppFormBase_MouseUp);
        }

        base.OnLoad(e);
    }

    private void AppFormBase_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
            downPoint = new Point(e.X, e.Y);
    }
    private void AppFormBase_MouseMove(object sender, MouseEventArgs e)
    {
        if (downPoint != Point.Empty)
            Location = new Point(Left + e.X - downPoint.X, Top + e.Y, - downPoint.Y);
    }
    private void AppFormBase_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
            downPoint = Point.Empty;
    }
}
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    Capture = false;
    Message msg = Message.Create(Handle, WM_NCLBUTTONDOWN, (IntPtr)HT_CAPTION, IntPtr.Zero);
base.WndProc(ref msg);
}