2021년 11월 6일 토요일

C# 윈폼(Application 클래스)

 C# 윈폼(Application 클래스)


C#.NET 프레임워크에서는 간단히 윈도우를 만들 수 있도록 Winform 클래스 라이브러리를 제공하며 다음과 같은 방법으로 윈도우를 생성한다. 


  • System.Windows.Forms.Form 클래스에서 파생된 윈도우폼 클래스 선언

  • 위에서 만든 클래스의 인스턴스를 System.Windows.Forms.Application.Run() 메소드에 매개변수로 넘겨 호출하면서 윈폼 응용 프로그램을 시작한다.


Application 클래스의 기능은 윈도우 응용프로그램을 시작하고 종료시키고, 윈도우 메시지를 처리하는 일을 한다.


응용프로그램의 시작은 Application.Run(), 응용프로그램의 종료는 Application.Exit()인데 Exit() 메소드가 호출되었다고 바로 종료되는 것은 아니다. 이 메소드가 하는 일은 응용프로그램의 모든 윈도우를 닫은 후 Run() 메소드가 Return되도록 하는 것이므로 Run() 메소드 뒷부분에 프로그램이 종료되면서 할 일이 있다면 해당 코드를 기술하면 된다.


[별도 이벤트처리 메소드를 만들고 델리게이트의 인자로]

 

System.Windows.Forms를 참조 추가해야 한다.

 

using System;

using System.Windows.Forms;

 

class Program : Form

    {

        static void Main(string[] args)

        {

            Program form = new Program();

            form.Click += new EventHandler(form.Form_Click);

            Console.WriteLine("윈도우 시작...");

            Application.Run(form);

            Console.WriteLine("윈도우 종료...");

        }

 

        void Form_Click(object sender, EventArgs e)

        {

            Console.WriteLine("폼클릭 이벤트...");

            Application.Exit();

        }

    }

 

 

[람다식을 이용한 무명함수로 이벤트 처리]

using System;

using System.Windows.Forms;

 

namespace ConsoleApplication9

{

    class Program : Form    {

        static void Main(string[] args)        {

            Program form = new Program();

            form.Click += new EventHandler(

                   (sender, eventArgs) =>

                   {

                      Console.WriteLine("폼클릭 이벤트...");

                      Application.Exit();

                   });

            Console.WriteLine("윈도우 시작...");

            Application.Run(form);

            Console.WriteLine("윈도우 종료...");

            

        }

    }

}

 

#윈폼, #시샵윈폼, #Application객체, #윈폼강좌, #윈폼강의

C#, 명명된 인수 및 선택적 인수

C#, 명명된 인수 및 선택적 인수


명명된 인수


매개변수 목록에서의 매개변수 위치지정 대신 매개변수의 이름과 인수를 연결하여 특정 매개변수에 대한 인수를 지정할 수 있으므로 매개변수의 순서를 기억하거나 확인할 필요가 없다.

메소드에서 파라미터 값을 넘길 때 매개변수 이름을 정해서 넘기는 방법을 제공한다.


 

using System;

namespace Test

{

    class Tester

    {       

        static void Main(string[] args)

        {

            Console.WriteLine(Sum(j : 1, i : 2));

            SayHello(age : 20, name : "OJC");

        }

 

        static int Sum(int i, int j) 

{

            Console.WriteLine("i={0}, j={1}", i, j);

            return i + j;

        }

 

        static void SayHello(string name, int age) 

        {

            Console.WriteLine("안녕, name = {0}, age = {1}", name, age);

        }

    }

}

 


선택적 인수


메소드, 생성자, 인덱서 또는 대리자의 정의에서 해당 매개변수가 필수인지 선택적인지 지정할 수 있는데, 호출할 경우 모든 필수 매개변수에 대한 인수는 항상 제공해야 하지만 선택적 매개변수에 대한 인수는 생략할 수 있다. 각각의 선택적 매개변수에는 기본값이 있으며 해당 매개변수에 대해 인수를 전달하지 않으면 기본값이 사용된다.



 

using System;

namespace Test

{

    class Tester

    {

        private int m = 88, n = 99;

 

        //Tester(){

        //    this.m = 0; this.n = 0;

        //}

 

        //위 기본생성자의 의미를 포함하고 있다.

        Tester(int m = 0, int n = 0)

        {

            this.m = m;        this.n = n;

        }

 

//선택적 매개변수

        static int Sum(int i = 0, int j = 0)  // i, j 매개변수없이 호출되면 I,j에 0이 대입

{

            return i + j;

        }

 

 

        static void Main(string[] args)

        {

            Console.WriteLine(Sum(1, 2));

            Console.WriteLine(Sum(j:7));

            Console.WriteLine(Sum());

 

            Tester t1 = new Tester();

            Console.WriteLine("m={0}, n={1}", t1.m, t1.n);

 

            Tester t2 = new Tester(1, 2);

            Console.WriteLine("m={0}, n={1}", t2.m, t2.n);

        }

 

        

    }

}

 

 

using System;

 

namespace Test

{

    class Tester

    {

        static void Main(string[] args)

        {

            Console.WriteLine(Minus(1, 2));              //i=1, j=2

            Console.WriteLine(Minus (1));                //i=1, j=0

            Console.WriteLine(Minus (i : 8, j : 9));     //i=8, j=9

            Console.WriteLine(Minus (j : 8, i : 9));     //i=9, j=8

            Console.WriteLine(Minus ());                 //i=0, j=0

        }

 

        static int Minus(int i = 0, int j = 0)  // i, j 매개변수없이호출되면 0이 대입됨

        {

            return i - j;

        }

    }

}

 

 

 

 

#명명된인수, #선택적인수, #매개변수, #시샵매개변수, #닷넷교육, #시샵강좌

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...