https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-iZCqT52CtVOhmaR6Nd-65M163g9u-&index=6

http://ojc.asia/bbs/board.php?bo_table=LecCsharp&wr_id=429
ojc.asia
https://www.youtube.com/watch?v=xlu8n59OE5U&list=PLxU-iZCqT52CtVOhmaR6Nd-65M163g9u-&index=8


윈폼, Form 클래스
Form 이벤트 처리방법
Form에 컨트롤 올리기 원리
C# 윈폼(Form클래스)
C# 프로그램이 윈도우 응용프로그램이 되기 위해서는 Form 클래스를 상속받아서 정의되어야 한다.
또한 Form 클래스는 운영체제가 보내는 메시지 중 일부 메시지에 대해 이벤트를 구현하고 있는데 예를들면, 사용자가 윈도우 폼에서 왼쪽 마우스를 클릭하면 WM_LBUTTONDOWN 메시지가 Form 객체로 전달되고 Form 객체는 이에 대해 MouseDown 이벤트를 발생시킨다.
윈폼 응용프로그램을 작성하는 경우 직접 윈도우 메시지를 처리하는 경우는 드물다. 왜냐하면 Form을 비롯한 윈도우와 각종 컨트롤들이 윈도우 메시지를 포장하여 이벤트로 구현해 놓았기 때문이다. 프로그래머는 단지 정의되어 있는 이벤트에 이벤트처리 메소드를 등록시키기만 하면 된다.
//MouseDown 이벤트 선언
public event MouseEventHandler MouseDown;
//MouseEventHandler 델리게이트 선언
public delegate void MouseEventHandler (object sender, MouseEventArgs e);
class MyForm : Form {
//이벤트 처리 메서드, sender : 이벤트가 발생한 객체, 여기서는 Form,
//MouseEventArgs는 Button(마우스의 어떤 버튼인지), Clicks(클릭한 횟수)
//Delta(휠의 회전방향과 거리), X(X좌표), Y(Y좌표)값을 가진다.
private void mousedown (Object sender, System.Windows.Forms.MouseEventArgs e) {
MessageBox.Show (“마우스클릭~”);
}
public MyForm() {
//Mousedown 이벤트에 MouseEventHandler 델리게이트를 통해 mousedown 메소드를 MouseDown 이벤트 처리 메소드로 등록한다.
this.Mousedown += new System.Windows.Forms.MouseEventHandler(this.mousedown);
}
}
[실습]
using System;
using System.Windows.Forms;
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
C# 윈폼(Form클래스 – 폼에 컨트롤 올리기)
윈도우 운영체제는 사용자 인터페이스를 위해 메뉴, 콤보 박스, 리스트 뷰, 버튼, 텍스트박스 등과 같은 표준 컨트롤을 제공한다. 닷넷의 윈폼은 이들 표준컨트롤을 윈도우 위에 쉽게 올릴 수 있도록 포장해 두었다.
이번에는 콘솔 프로그램 형태로 직접 컨트롤을 생성해서 폼 위에 올려보자. 다음과 같은 방법으로 하면 된다.
- 컨트롤의 인스턴스 생성
- 컨트롤의 프로퍼티(속성) 설정
- 컨트롤의 이벤트에 이벤트 처리기 등록
- 폼에 컨트롤 추가
1. 컨트롤의 인스턴스 생성
WinForm의 모든 컨트롤은 System.Windows.Forms.Control을 상속받아 만든다. 이 형식이
모든 윈도우의 컨트롤이 지원해야 하는 그래픽이나, 동작, 이벤트 등을 제공하기 때문에 컨트롤을 상속받는 어떤 클래스라도 윈폼 위에 올려 윈도우 UI를 구성할 수 있다.
Button button1 = new Button();
2. 컨트롤의 프로퍼티에 값 설정
button1.Text = “메시지”;
button1.Left = 50;
button1.Top = 50;
3. 컨트롤의 이벤트에 이벤트 처리 메소드 등록
사용자가 버튼을 클릭하면 메시지 박스를 띄운다.
button1.Click += (object sender, EventArgs e) =>
{
MessageBox.Show(“버튼 클릭~”);
};
4. 폼에 컨트롤 추가
Program p = new Program();
p.Controls.Add(button1);
Application.Run( p );
using System;
using System.Windows.Forms;
namespace ConsoleApplication9
{
class Program : Form
{
static void Main(string[] args)
{
Button button1 = new Button();
button1.Text = "메시지";
button1.Left = 50;
button1.Top = 50;
button1.Click += (object sender, EventArgs e) =>
{
MessageBox.Show("버튼 클릭~");
};
Button button2 = new Button();
button2.Text = "종료";
button2.Left = 150;
button2.Top = 50;
button2.Click += (object sender, EventArgs e) =>
{
MessageBox.Show("종료됩니다.~");
Application.Exit();
};
Program p = new Program();
p.Text = "윈폼 버튼 예제"; //윈도우 타이틀
p.Height = 150;
p.Controls.Add(button1);
p.Controls.Add(button2);
Application.Run(p);
}
}
}
#시샵동영상, #윈폼, #Form클래스, #Form이벤트, #컨트롤, #시샵교육, #시샵동영상, #닷넷교육, #닷넷동영상, 시샵동영상, 윈폼, Form클래스, Form이벤트, 컨트롤, 시샵교육, 시샵동영상, 닷넷교육, 닷넷동영상,