폼을 만드는 경우 상단 FormBorderStyle을 None로 적용 하게 되는 경우가 있습니다.
대게 디자이너들이 원하는 경우가 많죠
이럴 경우 상단이든 어디든 원하는 디자인으로 만들수 있기 때문에 상당히 유용하긴 하지만...
역시 귀찮다는거는 어쩔수 없죠
디자이너에 요구사항에 맞춰주기 위해서 한번 해보겠습니다.
상단바가 없어졌기 때문에 저는 그부분을 pictureBox로 대체 하였습니다.
그리고 그 pictureBox를 이동하는대 사용하기 위해서 API를 사용하였습니다..
이렇게 하는대 API를 사용한 이유는 코드도 간단 하고 더 빨라 보이더라구요
일단 선언부에
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();
그리고 마지막으로 pictureBox에 이런 이벤트를 주었습니다.
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
이렇게 해주면 pictureBox가 마치 상단바인것 처럼 폼이 이동하는걸 보실수 있겠습니다.
그리고는
// 창최소화 버튼
private void BtnMini_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
// 창최대화 버튼
private void BtnMini_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
}
// 창 닫기 버튼
private void BtnExit_Click(object sender, EventArgs e)
{
this.Close();
}
요런놈들을 만들어서 pictureBox 우측상단에 넣어주면 Border없는 Form이 완성됩니다.
[출처] Border없는 Form만들고 이동시키기|작성자 코아란