티거의 개발 공간

① 개요


C#에 대한 내용을 배우며 기록하는 용도입니다. 혹시 게시물을 보시면서 틀린 부분이나 설명이 빈약한 부분을 지적해주시면 감사하겠습니다. 목표는 윈도우폼에서 사용할 수 있는 도구 상자에 있는 도구들의 사용법을 모두 알아보고, 응용해보는 것까지입니다.


② Visual Studio UI



제가 사용하는 버전은 Visual Studio 2017 입니다. 버전에 따라 약간의 차이가 있을 수 있으나, 아마 거의 차이가 없을 것입니다. 폼에 인스턴스를 추가하는 방법은 도구 상자에서 원하는 인스턴스를 끌어다 폼에 놓거나 클릭하고 폼의 원하는 위치에 다시 클릭하면 그 자리에 인스턴스를 추가할 수 있습니다. 


그리고 프로그램을 실행하는 도중 출력되는 로그들은 하단의 프로그램 출력창에 나타나게됩니다. 또, 선택한 인스턴스의 세부 속성은 우측 하단에서 설정할 수 있습니다.


만약 제작 중인 프로그램을 실행하여 확인해보고 싶다면, 상단의 버튼들에서 시작이라는 버튼을 눌러 실행할 수 있습니다.


③ 버튼


이제 버튼을 폼에 추가하여 사용해보겠습니다.

도구 상자에서 [ Button ] 을 찾아서 폼에 추가합니다.

추가된 버튼을 클릭하여 선택하고 우측 하단의 속성창에서 [ Text ] 속성을 수정하여 버튼의 텍스트를 수정할 수 있습니다.




그리고 폼에 추가한 버튼을 [ 더블 클릭 ] 해보시면 직접 소스코드를 수정할 수 있는 코딩창이 나타납니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Example1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            /*
             * 이 부분에 쓴 소스코드들이 버튼을 클릭했을 때 실행됨.
             */
        }
    }
}
cs


제가 직접 적은 주석을 제외하고 20번줄 ~ 25번줄이 자동으로 생성됩니다. 주석처럼 저 안에 작성한 소스코드들이 버튼을 클릭했을 때 실행됩니다.

저는 저 부분에 '클릭했습니다.' 라는 문자열을 출력하고, 버튼의 텍스트를 '클릭했습니다.' 로 변경하도록 만들겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Example1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Console.WriteLine("클릭했습니다.");
            button1.Text = "클릭했습니다.";
        }
    }
}
cs


[ Console.WriteLine("클릭했습니다."); ] 이 코드가 출력, [ button1.Text = "클릭했습니다."; ] 이 코드가 버튼의 텍스트를 변경하는 코드입니다.


이제 실행하고 확인해보겠습니다.



클릭했을 때, 버튼의 텍스트가 변하고, 하단의 출력창에 '클릭했습니다.' 가 나온 결과입니다.

대부분 인스턴스를 더블 클릭했을 때는 [ 클릭했을 때 ] 작동될 수 있는 소스코드를 적을 수 있도록 자동 생성됩니다.



마감되었습니다 :)


약 2년전에 이 블로그를 개설하기 위해서 초대장을 받으려고 여러 티스토리 블로거분들을 찾아서 댓글을 썼던게 기억에 남네요.

티스토리 블로그는 다른 블로그와는 다르게 초대장이 있어야만 개설이 가능해요.


과거에 받았던 티스토리 초대장 중에 2장이 남았더라구요. 굉장히 적은 양이지만,

티스토리 블로그로 이전하시고 싶으신 분들이나, 새롭게 티스토리에서 블로그를 시작하시고 싶으신 분들에게 배포하려고합니다.


초대장이 필요하신 분들은 댓글로 자신의 이메일 주소, 어떤 블로그를 개설할 것인지 적어주시면 2명에게 1장씩 전달해 드리겠습니다.


감사합니다

서버



위는 압축파일을 풀면 볼 수 있는 내용물입니다.

각 메모리 할당량에 따른 버킷으로 나뉘어 있으며, 자신이 원하는 할당량을 선택해 서버를 열 수 있습니다.



서버가 정상적으로 열리면 버킷 창에 위와 같은 문구가 나타납니다.

한 번 서버를 연 후에 같은 폴더에 'server.properties' 라는 파일이 생깁니다.

이 'server.properties' 라는 파일은 워드패드를 이용해 열어주시면 됩니다.



그럼 위와 같은 내용이 나타날 것이고, 한글로 설명을 적어놓은 것은 필자가 설명을 위해 추가한 내용입니다.


다운로드



1.11.2.z01

1.11.2.zip


위의 파일은 분할 압축으로 같은 폴더에 모두 다운로드 받아놓고 1.11.2.zip 파일을 열어 압축을 풀어 주셔야합니다!


서버



위는 압축파일을 풀면 볼 수 있는 내용물입니다.

각 메모리 할당량에 따른 버킷으로 나뉘어 있으며, 자신이 원하는 할당량을 선택해 서버를 열 수 있습니다.



서버가 정상적으로 열리면 버킷 창에 위와 같은 문구가 나타납니다.

한 번 서버를 연 후에 같은 폴더에 'server.properties' 라는 파일이 생깁니다.

이 'server.properties' 라는 파일은 워드패드를 이용해 열어주시면 됩니다.



그럼 위와 같은 내용이 나타날 것이고, 한글로 설명을 적어놓은 것은 필자가 설명을 위해 추가한 내용입니다.


다운로드


1.10.2.z01

1.10.2.zip



위의 파일은 분할 압축으로 같은 폴더에 모두 다운로드 받아놓고 1.10.2.zip 파일을 열어 압축을 풀어 주셔야합니다!


서버



위는 압축파일을 풀면 볼 수 있는 내용물입니다.

각 메모리 할당량에 따른 버킷으로 나뉘어 있으며, 자신이 원하는 할당량을 선택해 서버를 열 수 있습니다.



서버가 정상적으로 열리면 버킷 창에 위와 같은 문구가 나타납니다.

한 번 서버를 연 후에 같은 폴더에 'server.properties' 라는 파일이 생깁니다.

이 'server.properties' 라는 파일은 워드패드를 이용해 열어주시면 됩니다.



그럼 위와 같은 내용이 나타날 것이고, 한글로 설명을 적어놓은 것은 필자가 설명을 위해 추가한 내용입니다.


다운로드



1.8.z01

1.8.zip



위의 파일은 분할 압축으로 같은 폴더에 모두 다운로드 받아놓고 1.8.zip 파일을 열어 압축을 풀어 주셔야합니다!


서버



위는 압축파일을 풀면 볼 수 있는 내용물입니다.

각 메모리 할당량에 따른 버킷으로 나뉘어 있으며, 자신이 원하는 할당량을 선택해 서버를 열 수 있습니다.



서버가 정상적으로 열리면 버킷 창에 위와 같은 문구가 나타납니다.

한 번 서버를 연 후에 같은 폴더에 'server.properties' 라는 파일이 생깁니다.

이 'server.properties' 라는 파일은 워드패드를 이용해 열어주시면 됩니다.



그럼 위와 같은 내용이 나타날 것이고, 한글로 설명을 적어놓은 것은 필자가 설명을 위해 추가한 내용입니다.


다운로드



1.7.10.z01

1.7.10.zip



위의 파일은 분할 압축으로 같은 폴더에 모두 다운로드 받아놓고 1.7.10.zip 파일을 열어 압축을 풀어 주셔야합니다!


서버



위는 압축파일을 풀면 볼 수 있는 내용물입니다.

각 메모리 할당량에 따른 버킷으로 나뉘어 있으며, 자신이 원하는 할당량을 선택해 서버를 열 수 있습니다.



서버가 정상적으로 열리면 버킷 창에 위와 같은 문구가 나타납니다.

한 번 서버를 연 후에 같은 폴더에 'server.properties' 라는 파일이 생깁니다.

이 'server.properties' 라는 파일은 워드패드를 이용해 열어주시면 됩니다.



그럼 위와 같은 내용이 나타날 것이고, 한글로 설명을 적어놓은 것은 필자가 설명을 위해 추가한 내용입니다.


다운로드



1.5.2 Bukkit.z01

1.5.2 Bukkit.zip


위의 파일은 분할 압축으로 같은 폴더에 모두 다운로드 받아놓고 1.5.2 Bukkit.zip 파일을 열어 압축을 풀어 주셔야합니다!



형 변환


형 변환은 서로 상속된 클래스들을 타입으로 사용한 변수일 경우 형 변환이 가능하다. 예시를 들자면 실수형인 double과 float를 예시로 들 수 있다.

형 변환은 아래와 같이 가능하다.


1
2
float f = 1.0f;
double d = (double) f;
cs


float값을 double로 변환하여 변수로 저장시킨 것인데 2번째 줄이 형 변환 코드이다.

형식은 아래와 같다.


1
type1 value2 = (type1) value1;
cs


연산자


연산자는 크게 산술, 부호, 문자열, 비교, 논리, 비트 논리, 비트 이동, 대입, 증감, 삼항 연산자로 나뉜다.


산술 연산자


산술 연산자는 -,+,*,/,% 으로 총 5개의 연산자이며, 기본적인 사칙연산을 수행한다.


-는 뺄셈 연산

+는 덧셈 연산

*는 곱셈 연산

/는 나눗셈 연산

%는 나눗셈 후 나머지 연산


1
int i = 10 / 5;
cs


위처럼 나눗셈 연산 후 i에 대입이 가능하다.


부호 연산자


부호 연산자는 -와 +로 총 2개의 연산자이며, 실수의 부호를 결정하는데 사용한다.


1
2
int i = 20;
int d = -i; //d = -20
cs


위처럼 i는 양수 20을 대입하고 d는 i에 - 연산자를 사용하여 -20을 대입한다.


문자열 연산자


문자열 연산자는 +로 단 한개 뿐이다. 이 문자열 연산자는 두 개의 문자열을 이어 붙이는데 사용한다.


1
String name = "Hello, " + "World!";
cs


위처럼 두 개의 문자열을 +로 이어 붙여 name에 대입할 수 있다.


비교 연산자


비교 연산자는 ==, !=, >, >=, <, <= 로 총 6개의 연산자이며, 두 개의 값을 비교할 때 사용된다.


==는 비교 대상 둘이 같으면 true, 다르면 false를 반환하고

!=는 비교 대상 둘이 다르면 true, 같으면 false를 반환한다.

> 는 연산자의 좌측에 있는 값이 우측의 값보다 더 크다면 true, 더 작다면 false를 반환,

>= 는 연산자의 좌측에 있는 값이 우측의 값보다 더 크거나 같다면 true, 더 작다면 false를 반환한다.

< 는 연산자의 우측에 있는 값이 좌측의 값보다 더 크다면 true, 더 작다면 false를 반환,

<= 는 연산자의 우측에 있는 값이 좌측의 값보다 더 크거나 같다면 true, 더 작다면 false를 반환한다.


여기서 주의해야할 점은 ==나 !=는 실수형이 아닌 다른 모든 값들을 비교할 수 있지만

부등호인 >, >=, <, <= 는 실수형에서만 사용이 가능한 대소 비교 연산자들이다.


1
2
3
int i = 10;
int d = 5;
boolean bool = i > d;
cs


위의 예시는 i가 10이고 d가 5인 상태에서 i > d 는 참이므로 true를 반환한다.

따라서 bool의 값은 true이다.


논리 연산자


논리 연산자는 &&, &, ||, |, ^, ! 로 총 6개의 연산자이며, 두 개의 논리형을 구별한다.


&&와 &은 좌측과 우측에 있는 피연산자들이 모두 true일 경우에만 true를 반환하고 두 연산자의 역할은 같다.

||와 |은 좌측과 우측에 있는 피연산자들중 하나 이상이 true일 경우에만 true를 반환하고 두 연산자의 역할은 같다.

^ 는 좌측과 우측에 있는 두 피연산자의 논리가 반대여야 true를 반환한다.

! 는 논리 부정으로 뒤에 오는 피연산자의 논리의 반대 논리를 반환한다.


1
2
3
int i = 10;
int d = 5;
boolean bool = (i > d) ^ (i < d);
cs


위의 예시는 i가 10이고 d는 5이다. 이때 i > d는 참이므로 true, i < d 는 거짓이므로 false이다.

이때 논리 연산자인 ^으로 좌측과 우측 두 피연산자의 논리가 반대이므로 bool 은 true가 된다.


대입 연산자


대입 연산자는 =, +=, -=, *=, /=, %=, &=, !=, ^=, <<=, >>=, >>>= 로 총 12개의 연산자이다.


=는 우측의 값을 좌측에 대입한다.

+=는 우측의 값을 좌측의 값에 더한 후 좌측에 대입한다.

-=는 우측의 값을 좌측의 값에 뺀 후 좌측에 대입한다.

*=는 우측의 값을 좌측의 값에 곱한 후 좌측에 대입한다.

/=는 우측의 값을 좌측의 값에 나눈 후 좌측에 대입한다.

%=는 우측의 값을 좌측의 값에 나눈 후 나머지를 좌측에 대입한다.


아래는 비트 논리나 비트 이동에 사용되는 연산자이다.

(해당 강좌에서는 주로 다루지 않음.)


&=는 우측의 값을 좌측의 값에 & 연산을 실행 후 결과를 좌측에 대입한다.

!=는 우측의 값을 좌측의 값에 ! 연산을 실행 후 결과를 좌측에 대입한다.

^=는 우측의 값을 좌측의 값에 = 연산을 실행 후 결과를 좌측에 대입한다.

<<= 는 우측의 값을 좌측의 값에 << 연산을 실행 후 결과를 좌측에 대입한다.

>>= 는 우측의 값을 좌측의 값에 >> 연산을 실행 후 결과를 좌측에 대입한다.

>>>= 는 우측의 값을 좌측의 값에 >>> 연산을 실행 후 결과를 좌측에 대입한다.


1
2
int i = 10;
+= 5;
cs


위의 예시는 i가 10이고, 2번째 줄에서 += 대입 연산자를 이용해 10에 5를 더한 후 i에 대입한다.

따라서 i의 값은 15이다.


증감 연산자


증감 연산자는 ++, --로 총 2개의 연산자이다.


++는 좌측의 값에 1을 더한 후 좌측에 대입한다.

--는 좌측의 값에 1을 뺀 후 좌측에 대입한다.


1
2
int i = 10;
++;
cs


위의 예시는 i가 10이고, 2번째 줄에서 ++ 증감 연산자를 이용해 10에 1을 더한 후 i에 대입한다.

따라서 i의 값은 11이다.


삼항 연산자


삼항 연산자는 [ 조건식 ? 값1 : 값2 ] 라는 형식으로 조건식에 따라 반환되는 값이 다른 연산자이다.


[ 조건식 ? 값1 : 값2 ] 는 조건식이 true면 값1을 반환하고 false면 값2를 반환한다.


1
2
3
int i = 10;
int d = 5;
int result = (i > d) ? i : d;
cs


위의 예시는 i가 10이고 d가 5이다. 이 때 삼항 연산자의 조건식인 i > d는 참이므로 true이고 그에 따라서 i의 값이 반환된다.

따라서 result는 i의 값인 10이 된다.


비트 논리 연산자, 비트 이동 연산자


비트 논리 나 비트 이동 연산자는 암호화 파트가 아니라면 거의 사용하지 않으므로 다음에 알아본다.