Number Only Textbox

// number only textbox using TryParse
private void textBox1_KeyPress(object
sender, KeyPressEventArgs e)
{
int value = 0;
e.Handled = !int.TryParse(e.KeyChar.ToString(), out value);
}
// number only textbox using Regex.IsMatch
private void
textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), “\\d+”))
e.Handled = true;
}

// NumberTextBoxLib custom control (inherited from TextBox)
public
partial class NumberTextBox : TextBox
{
public NumberTextBox()
{
InitializeComponent();
}

protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
int value = 0;
e.Handled = !int.TryParse(e.KeyChar.ToString(), out value);

}
}

1305433735.zip

Custom Control

사용자 정의 컨트롤
-기존 컨트롤을 상속받아 사용자 정의 새로운 컨트롤을 작성
-UserControl을 상속받아 합성 컨트롤을 작성

1. 파일 메뉴->새로 만들기->프로젝트
Visual C# 프로젝트 목록에서 “Windows Forms 컨트롤 라이브러리” 선택하고 이름을 “NumberTextBoxLib”을 입력
사용자 삽입 이미지

2. 솔루션 탐색기에서 UserControl1.cs를 NumberTextBox.cs로 변경
NumberTextBox.cs 코드에서 상속을 UserControl에서 TextBox로 변경
public partial class NumberTextBox: TextBox
NumberTextBox.Designer.cs에 InitializeComponent()에서 AutoScaleMode 속성은 삭제
NumberTextBox.cs 코드에서 OnKeyPress(…) 메소드를 재정의
솔루션을 빌드하면 컨트롤이 완성
완성
사용자 삽입 이미지

———————————————————————————————
사용자 정의 컨트롤 사용
1.솔루션 탐색기의 “참조”에 “NumberTextBoxLib.dll”를 “참조추가”
“도구상자”에서 오른쪽 마우스 “항목선택”을 한 후 “찾아보기” 버튼에서 “NumberTextBoxLib.dll” 다시 로딩한 후, “NumberTextBox” 에 체크가 됬는지 확인

사용자 삽입 이미지

사용자 삽입 이미지사용자 삽입 이미지사용자 삽입 이미지

2. 폼에 “NumberTextBox”를 사용하여 디자인하고 솔루션을 빌드하면 컨트롤이 완성

 

C# Windows Forms Controls

Label, Button 사용예
http://dis.dankook.ac.kr/lectures/hci09/entry/Controls

Buttons
http://dis.dankook.ac.kr/lectures/hci09/entry/Buttons

GroupBox
http://dis.dankook.ac.kr/lectures/hci09/entry/GroupBox

TextBox
http://dis.dankook.ac.kr/lectures/hci09/entry/TextBox

LinkedLabel
http://dis.dankook.ac.kr/lectures/hci09/entry/Linked-Label

ListBox
http://dis.dankook.ac.kr/lectures/hci09/entry/ListBox

Poll
http://dis.dankook.ac.kr/lectures/hci09/entry/Poll

PictureBox
http://dis.dankook.ac.kr/lectures/hci09/entry/Picture-Timer

TabControl
http://dis.dankook.ac.kr/lectures/hci09/entry/Tab-Control

TreeControl
http://dis.dankook.ac.kr/lectures/hci09/entry/Tree-Control

ListView
http://dis.dankook.ac.kr/lectures/hci09/entry/ListView

Textbox (Number Only)
http://dis.dankook.ac.kr/lectures/hci09/entry/Number-Only-Textbox

HW3 Figure JSON

FigureJSON

[
{“__type”:”FigureAreaPerimeterCalculator.Quadrilateral”,
“Bounds”:{“__type”:”FigureAreaPerimeterCalculator.FigureBound”,”X”:400,”Y”:300,”Width”:200,”Height”:200},
“Color”:13,
“Vertices”:[{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:400,”Y”:300},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:400,”Y”:500},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:600,”Y”:500},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:600,”Y”:300}],
“Sides”:[200,200,200,200],
“Angles”:[1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966]},
{“__type”:”FigureAreaPerimeterCalculator.Quadrilateral”,
“Bounds”:{“__type”:”FigureAreaPerimeterCalculator.FigureBound”,”X”:10,”Y”:10,”Width”:290,”Height”:200},
“Color”:11,
“Vertices”:[{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:10,”Y”:10},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:10,”Y”:210},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:300,”Y”:210},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:300,”Y”:10}],
“Sides”:[200,290,200,290],
“Angles”:[1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966]},
{“__type”:”FigureAreaPerimeterCalculator.Quadrilateral”,
“Bounds”:{“__type”:”FigureAreaPerimeterCalculator.FigureBound”,”X”:50,”Y”:240,”Width”:100,”Height”:100},
“Color”:14,
“Vertices”:[{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:50,”Y”:240},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:10,”Y”:340},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:110,”Y”:340},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:150,”Y”:240}],
“Sides”:[107.70329614269008,100,107.70329614269008,100],
“Angles”:[1.9513027039072615,1.1902899496825317,1.9513027039072615,1.1902899496825317]},
{“__type”:”FigureAreaPerimeterCalculator.Quadrilateral”,
“Bounds”:{“__type”:”FigureAreaPerimeterCalculator.FigureBound”,”X”:200,”Y”:350,”Width”:100,”Height”:160},
“Color”:10,
“Vertices”:[{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:200,”Y”:350},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:50,”Y”:510},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:350,”Y”:510},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:300,”Y”:350}],
“Sides”:[219.31712199461307,300,167.6305461424021,100],
“Angles”:[2.3239476077570913,0.81764504583270214,1.2679114584199251,1.873681195169868]},
{“__type”:”FigureAreaPerimeterCalculator.Quadrilateral”,
“Bounds”:{“__type”:”FigureAreaPerimeterCalculator.FigureBound”,”X”:325,”Y”:225,”Width”:25,”Height”:75},
“Color”:1,
“Vertices”:[{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:325,”Y”:225},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:300,”Y”:300},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:325,”Y”:375},{“__type”:”FigureAreaPerimeterCalculator.Point”,”X”:350,”Y”:300}],
“Sides”:[79.05694150420949,79.05694150420949,79.05694150420949,79.05694150420949],
“Angles”:[0.64350110879328448,2.4980915447965089,0.64350110879328448,2.4980915447965089]}
]

Getting Started with Windows Forms

http://msdn.microsoft.com/en-us/library/ms229601(VS.80).aspx

 

Windows Forms Application

.NET2015

 

 

 

  • 메뉴에서 File->New->Project->Visual C# 템플릿->Windows Forms Application를 선택한 후 “프로젝트 이름(예를 들어, WindowFormHello)”을 적고 확인버튼을 누르면 빈폼 프로젝트가 생성된다.
 form1
 form2

 

컨트롤 코드 추가

  • Toolbox(도구상자) 에서 컨트롤을 선택(예를 들어, Label 또는 Button)하여 Dialog기반의 Form1 안에 추가하여 편집한다.
 form3

컨트롤에 이벤트 추가하기
-컨트롤 (예를들어, 버튼을 더블클릭하면 또는 이벤트목록중 Click이벤트에 더블클릭하면)에 클릭 이벤트에 대한 이벤트핸들러에 내용(예를 들어, 레이블의 Text를 “Button Clicked”)을 작성한다.
private void button1_Click(object sender, EventArgs e)
{

// button1을 클릭하면 label1 텍스트 변경

label1.text = “Button Clicked”;
// button1을 클릭하면 Form2 팝업

Form2 f = new Form2();

f.ShowDialog();
}

form8

폼 코드 추가

  • Project 에서 폼을 추가(Add New Item)하여 Form2 를 추가한다.

form5

form6

 

  • Toolbox(도구상자) 에서 컨트롤을 선택(예를 들어, Label 또는 Textbox)하여 Dialog기반의 Form2 안에 추가하여 편집한다.

form7

  • Form2 안에 코드를 추가한다.

form9

빌드(F7) 후 실행(F5)하기

 

TRACE macro

TRACE macro
-윈도우 응용프로그램 개발시 Visual Studio IDE의 Output Window (출력창)에 Debug하는 내용을 출력하고자 할 때 System.Diagnostics.Trace.WriteLine(…..)을 사용
-기존의 C# Console 응용프로그램에서 System.Console.WriteLine(….)와 동일
-기존의 MFC 윈도우 프로그래밍에서 TRACE 매크로와 비슷 (C의 printf와 동일한 형식 지원)
-기존의 WIN32 윈도우 프로그래밍에서 OutputDebugString 함수와 같은 기능 (C의 printf와 동일한 형식 지원)