中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

winform窗體移動的方法是什么

小億
129
2023-11-13 10:00:49
欄目: 智能運維

在WinForms中,窗體的移動可以通過以下方法實現:

  1. 使用鼠標事件:通過處理鼠標按下、移動和釋放事件來實現窗體的移動。可以在鼠標按下事件中記錄鼠標的初始位置,并在鼠標移動事件中計算鼠標的偏移量,然后通過修改窗體的位置實現移動效果。
private Point mouseOffset;

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    mouseOffset = new Point(-e.X, -e.Y);
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        Point mousePos = Control.MousePosition;
        mousePos.Offset(mouseOffset.X, mouseOffset.Y);
        Location = mousePos;
    }
}
  1. 使用Windows消息:通過重寫窗體的WndProc方法,處理WM_NCHITTEST和WM_NCLBUTTONDOWN消息來實現窗體的移動。WM_NCHITTEST消息用于確定鼠標點擊的位置,WM_NCLBUTTONDOWN消息用于處理鼠標按下事件。
private const int WM_NCHITTEST = 0x0084;
private const int HT_CAPTION = 0x0002;
private const int WM_NCLBUTTONDOWN = 0x00A1;

protected override void WndProc(ref Message m)
{
    switch (m.Msg)
    {
        case WM_NCHITTEST:
            base.WndProc(ref m);
            if (m.Result.ToInt32() == HT_CAPTION)
                m.Result = new IntPtr(HT_CLIENT);
            return;
        case WM_NCLBUTTONDOWN:
            if ((int)m.WParam == HT_CAPTION)
            {
                ReleaseCapture();
                SendMessage(Handle, WM_NCLBUTTONDOWN, new IntPtr(HT_CAPTION), IntPtr.Zero);
            }
            break;
    }
    base.WndProc(ref m);
}

以上是兩種常用的方法,可以根據實際需要選擇適合的方法來實現窗體的移動。

0
蒲江县| 朝阳市| 无锡市| 北流市| 桂阳县| 怀远县| 朝阳县| 云南省| 兰西县| 松潘县| 缙云县| 海淀区| 扶沟县| 嘉峪关市| 株洲市| 廊坊市| 孝感市| 高清| 稷山县| 中方县| 贺兰县| 子洲县| 彰化县| 平定县| 汉沽区| 岳阳市| 会东县| 罗山县| 武义县| 元氏县| 岐山县| 梓潼县| 桦川县| 新乐市| 宜宾市| 泽库县| 河源市| 阳高县| 泰安市| 云林县| 孝义市|