블로그 이미지
likeban

calendar

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 28
29 30 31        

Notice

'C# windows form'에 해당되는 글 1

  1. 2011.09.19 [C#] 콘솔창에서 윈도우폼 띄우기
2011.09.19 15:27 IT


프로젝트를 생성할 때, Windows Forms 응용 프로그램을 선택하고 만들면 쉽게 윈도우폼을 만들 수 있지만,

저는 윈도우폼이 주가 되도록 프로그램을 짜려니 답답하더라구요.

그래서 이번에는 콘솔창으로 프로젝트를 만든 뒤에 윈도우폼을 출력하는 방법을 알아보겠습니다.

우선 콘솔 기반으로 프로젝트를 생성합니다.
 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace test

{

    class Program

    {

        static void Main(string[] args)

        {

        }

    }

}


위와 같은 소스 코드가 기본으로 생성됩니다.

윈도우 폼을 사용하기 위해서는 Form을 상속받아야 합니다.

Main이 있는 Program 클래스에 Form을 상속받아 사용해도 되지만, 저는 새로운 클래스를 만들어서 작업해주었습니다.

MainForm이라는 클래스를 하나 추가해주었습니다.

그리고, 생성된 MainForm의 클래스에 Form을 상속받도록 수정하고 생성자를 정의해줍니다.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace test

{

    class MainForm : Form

    {

        public MainForm()

        { 

        }

    }

}


이렇게 수정해주고 나면 Form에서 형식을 찾을 수 없다면서 컴파일 에러가 날 것입니다.

아무리 using을 해주려고 해도 불가능합니다.

콘솔로 프로젝트를 생성하면,  윈도우 폼과 관련된 서비스가 참조되어 있지 않기 때문에 문제가 발생하게 되는 것입니다.


이럴 때에는 프로젝트에서 오른쪽버튼을 누른 뒤, 참조추가를 선택합니다.

그리고, .Net 탭으로 이동하여, 

System.Windows.Forms
System.Drawing
 

이 두 가지를 추가합니다.

Forms는 윈도우 폼을 사용하기 위함이고, Drawing은 폼에서 컨트롤(button, listView...)들을 사용하기 위함입니다.

이렇게 추가가 끝나면 using으로 등록이 가능합니다. :)


컴파일 에러를 다 잡았으면, 메인으로 돌아와서 다음과 같이 수정합니다.

namespace test

{

    class Program

    {

        static MainForm m_MainForm;


        static void Main(string[] args)

        {

            m_MainForm = new MainForm();

            Application.Run(m_MainForm);

        }

    }

}


메인에서 사용한 Application.Run 메소드를 다른 곳에서 사용하면 적절한 타이밍에 윈도우 폼을 불러들일 수 있을 것 같습니다.

근데 굳이 메인에서 처음에 불러들인다면, 이런방식으로 사용할 필요가 있나...? 하는 생각도 듭니다.

아니면, 이 상태로 메인폼을 쓰레드에서 따로 실행시킨다면, 메인폼과는 별개로 다른 작업을할 수 있기 때문에 괜찮을 것 같지만, 문제가 생기지 않을까 하는 생각도 드네요.ㅎㅎㅎ

저작자 표시 비영리 변경 금지
신고
posted by likeban
prev 1 next

티스토리 툴바