C#으로 윈폼
만들기(Form클래스,마우스 이벤트 처리)
C# 프로그램이 윈도우 응용프로그램이 되기 위해서는
Form를 상속받아서 정의되어야 한다.
Form클래스는 운영체제가 보내는 메시지 중 일부 메시지에 대해
이벤트를 구현하고 있는데 사용자가 윈도우 폼에서 왼쪽 마우스를 클릭하면 WM_LBUTTONDOWN 메시지가 Form객체로 전달되고 Form 객체는 이에 대해 MouseDown 이벤트를 발생시킨다.
윈폼 응용프로그램을 작성하는 경우 이전 예제처럼 직접 윈도우
메시지를 처리하는 경우는 드물다.
왜냐하면 Form을 비롯한 윈도우와 각종 컨트롤들이 윈도우 메시지를 포장하여
이벤트로 구현해 놓았기 때문이다.
개발자는 단지 정의되어 있는 이벤트에
이벤트처리 메소드를 등록시키기만 하면 된다.
class OnjForm : Form {
//이벤트
처리 메서드,
sender : 이벤트가
발생한 객체,
여기서는
Form,
//MouseEventArgs는
Button(마우스의
어떤 버튼인지),
Clicks(클릭한
횟수)
//Delta(휠위
회전방햔과
거리),
X(X좌표),
Y(Y좌표)값을
가진다.
private void mousedown (Object
sender, System.Windows.Forms.MouseEventArgs
e) {
MessageBox.Show (“안녕~”);
}
public OnjForm() {
//Mousedown
이벤트에
MouseEventHandler
델리게이트를
통해 mousedown
메소드를
MouseDown
이벤트
처리 메소드로
등록한다.
this.Mousedown += new System.Windows.Forms.MouseEventHandler(this.mousedown);
}
}
//MouseDown 이벤트 선언
public event MouseDownHandler MouseDown;
//MouseEventHandler 델리게이트 선언
public delegate void MouseEventHandler (object sender,
MouseEventArgs e);
class Program : Form
{
public void MouseHandler(object sender, MouseEventArgs e)
{
Console.WriteLine("Sender : " +
((Form)sender).Text);
Console.WriteLine("Sender : " +
((Form)sender).Name);
Console.WriteLine("X:{0}, Y:{1}", e.X, e.Y);
Console.WriteLine("Button:{0}, Clicks:{1}",
e.Button, e.Clicks);
}
public Program(String
title)
{
this.Text = title;
this.Name = "윈폼";
//MouseDown 이벤트 처리기 등록
this.MouseDown += new MouseEventHandler(MouseHandler);
}
static void Main(string[]
args)
{
Application.Run( new Program("마우스 이벤트 예제"));
}
}
[결과]
Sender :
마우스 이벤트
예제
Sender :
윈폼
X:122,
Y:50
Button:Left, Clicks:1
댓글 없음:
댓글 쓰기