개발/C#

C#클래스 분리

FA1976 2017. 12. 26. 07:26

아주 간단한 예제.

버튼을 누르면 테스트 박스에 "테스트"란 글씨가 뜬다.


그런데. 윈도우 폼 형태의 프로젝트에서는 UI 즉 버튼이나 텍스트 박스같은 것들은 모두 private로 잡히기 때문에

모든 코드를 Form1.cs에서 작성해야 한다.


나처럼 C를 오래 했던 사람들이나 소프트웨어 구조(아키텍쳐)를 배운 사람입장에서는 도무지 용납이 안된다.

왜냐 유지 보수 차원에서라도 모든 코드를 Form1.cs에 때려 박으면 재사용이 일단 안된다. 어디에 무슨 코드가 있는지 코드 줄이 길게 되면 연관된것끼리 묶는다 해도 이건 아닌거다. 


그래서. 간단한 예제를 만들어봤다.

button1과 textbox1은 form1.Designer.cs에 만들어져 있고, form1.Designer.cs와 form1.cs는 partial로 묶여 있기 때문에 from1.cs에서 코드를 작성해야 한다.


여기에 Class1.cs를 추가한다음. 버튼을 누루면 Class1.cs의 함수(메소드)를 호출하여 그곳에서 textbox1에 글씨는 써넣는것이다. 그렇게 되면 나름 코드관리가 될것 같다.


<Form1.cs>

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 TestProject

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            Class1.TextOut(this);

        }


        public void TextControl(string s)

        {

            textBox1.Text = s;

        }

    }


}    

- 외부에서 textBox1에 접근할수 있도록 public 형태로 메소드를 하나 만들어야 한다.
- button1을 클릭했을때에는 Class1.cs에 있는 메소드를 호출하면 된다.

<Class1.cs >
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TestProject 
{
    class Class1 
    {
        public static void TextOut(Form1 form)
        {
            form.TextControl("테스트");
        }

    }
}
- Class1에 public static으로 TextOut() 메소드를 하나 만들고. form1에 있는 TextControl 메소드를 호출하는 방식이다.


'개발 > C#' 카테고리의 다른 글

c# 주소변환 \u003d \u002d  (0) 2018.01.19
Listview Checkbox 에 checked된 목록 가져오기  (0) 2018.01.17
C# Intel hex to bin Code  (0) 2018.01.02
C# CRC32  (0) 2017.12.27
C#에서 dll import 하기  (0) 2017.12.14
C# 폼간에 전역변수 사용하기  (0) 2017.12.14
디버깅 오류 - System.BadImageFormatException  (0) 2017.12.13
모달리스 다이얼로그  (0) 2017.12.13