• C#实现鼠标拖动自定义窗口


    1. 首先要把Winform默认的边框去掉:

    this.FormBorderStyle = FormBorderStyle.None;

        

    图1 默认窗口                    图2 去掉默认边框

     

    1. 在窗体上拖入一个panel,设置panel属性,并拖入自己想要的控件。
    1. panel1.Dock = DockStyle.Fill;
    2. panel1.BackgroundImage = 诚信.Properties.Resources.login;
    3. panel1.BackgroundImageLayout = ImageLayout.Stretch;
      1. 给panel添加三个事件: MouseUp、MouseMove、MouseDown。即可实现鼠标拖动窗体移动。
    4. private bool formMove = false;//窗体是否移动
    5. private Point formPoint;//记录窗体的位置
    6.  
    7. #region 拖动窗体移动
    8. private void panel1_MouseUp(object sender, MouseEventArgs e)
    9. {
    10.  
    11.     if (e.Button == MouseButtons.Left)//按下的是鼠标左键
    12.     {
    13.          formMove = false;//停止移动
    14.     }
    15.  
    16. }
    17.  
    18. private void panel1_MouseMove(object sender, MouseEventArgs e)
    19. {
    20.     if (formMove == true)
    21.     {
    22.         Point mousePos = Control.MousePosition;
    23.         mousePos.Offset(formPoint.X, formPoint.Y);
    24.         Location = mousePos;
    25.     }
    26. }
    27.  
    28. private void panel1_MouseDown(object sender, MouseEventArgs e)
    29. {
    30.     formPoint = new Point();
    31.     int xOffset;
    32.     int yOffset;
    33.     if (e.Button == MouseButtons.Left)
    34.     {
    35.         xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
    36.         yOffset = -e.Y - SystemInformation.FrameBorderSize.Height;//SystemInformation.CaptionHeight -
    37.         formPoint = new Point(xOffset, yOffset);
    38.         formMove = true;//开始移动
    39.     }
    40. }
    41. #endregion
      1. 运行结果

        图3 运行结果

  • 相关阅读:
    家长如何助力孩子适应小学生活
    一年级线上家长会
    gdb常用调试命令
    二叉树-后序遍历
    机器人
    Oracle创建只读账号的详细步骤
    ORACLE RAC日常运维-调整RAC+DG环境redo大小
    Redis 延迟分析
    oracle dataguard 重启步骤
    catalog start with + switch database to copy的妙用
  • 原文地址:https://www.cnblogs.com/sodu88/p/4447455.html
Copyright © 2020-2023  润新知