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
반응형
'IT > C#' 카테고리의 다른 글
[C# winform] TextBox 커서 자동으로 깜빡이게 (1) | 2019.01.10 |
---|---|
[C#] PictureBox 이미지 자르고 적용하기 (0) | 2018.12.05 |
[C#] 마우스 휠 이벤트에 따른 확대, 축소 (+ 마우스 위치 확대)(+21.02.22 재수정) (36) | 2018.11.22 |
[C#] OMRON PLC Test Program (6) | 2018.11.15 |
[C#] UI Control 둥근 테두리 만들기 (1) | 2018.11.14 |