IT/C#

[C#] WinForm 마우스 클릭 이동으로 움직이기

Ella.J 2018. 11. 26. 17:04
728x90
반응형


Windows Form 개발 시 디자인을 위해 Form Style 을 적용하는 경우가 있다.

일반적으로 FormBorderStyle 을 None으로 설정해 상단바를 없애고 Manual로 만드는데

이렇게 설정했을 때, 프로그램 실행 후 윈도우 상에서 Form의 위치 변경이 불가능하다.


이런 경우에, 윈도우 상에서 Form을 마우스 클릭 이동으로 위치 변경하는 방법을 포스팅하고자 한다.



Form을 만들고 FormBorderStyle 을 None으로 설정 후

위 화면에서 F7 을 눌러 View Code 모드로 들어간다.


먼저 전역변수로 마우스 이벤트를 핸들링 할


bool On;

Point Pos;


를 등록해주고 Form1() 안에 아래의 코드를 추가해 준다.


1
2
3
MouseDown += (o, e) => { if (e.Button == MouseButtons.Left) { On = true; Pos = e.Location; } };
MouseMove += (o, e) => { if (On) Location = new Point(Location.X + (e.X - Pos.X), Location.Y + (e.Y - Pos.Y)); };
MouseUp += (o, e) => { if (e.Button == MouseButtons.Left) { On = false; Pos = e.Location; } };
cs


위 세 줄은 Form 에 MouseDown, MouseMove, MouseUp Event를 등록해주는 코드이다.



전체 코드 ↓


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System.Drawing;
using System.Windows.Forms;
 
namespace FormTest
{
    public partial class Form1 : Form
    {
        bool On;
        Point Pos;
 
        public Form1()
        {
            InitializeComponent();
 
            MouseDown += (o, e) => { if (e.Button == MouseButtons.Left) { On = true; Pos = e.Location; } };
            MouseMove += (o, e) => { if (On) Location = new Point(Location.X + (e.X - Pos.X), Location.Y + (e.Y - Pos.Y)); };
            MouseUp += (o, e) => { if (e.Button == MouseButtons.Left) { On = false; Pos = e.Location; } };
        }
    }
}
 
cs


저장하고 실행해 주면 Form 위에서 마우스 클릭 후

마우스를 이동하면 창을 움직일 수 있다. : )


728x90
반응형