본문 바로가기

C#

C# - 데스크탑 WinForm/GITHUB 사용법

반응형

 

 깃 서버에서 나의 컴퓨터로 정보를 가져오는 것을 클론(CLONE)이라고 한다.

깃에서 가져온 클론을 내 컴퓨터에서 허용 해주는 것을 커밋!(COMMIT)! 

깃 서버와 나의 컴퓨터가 같이 움직일 수 있도록 하는 것이 푸시 (PUSH) -변경되는 것을 깃 서버에 업로드하는 것

다른 사람이 작업을 해서 깃서버에 올리고 그것이 나의 컴퓨터와 동기화 되는 것을 풀(PULL)

 

 

 

 

제네릭이란? 변수의 형을 매개변수로 하여 클래스나 메소드의 알고리즘을 자료형과 무관하게 기술하는 기법

 

형 매개변수(type parameter) 클래스 내의 필드나 메소드 선언시 자료형으로 사용 '<'과 '>' 사이에 형 매개변수의 이름을 기술 : <T1, T2, T3, ..., Tn> 

 

 

 

 

 

 

 

alt +enter 생성자 생성 자동으로 매개변수로 생성가능

 

fore +tab +tab 하면 자동으로 형식이 완성됨

 

 

제네릭 사용하는 방법 다시 공부하기 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GenericApp
{  public class SimpleGeneric<T>
    {
        private T[] values;
        private int index;

        public SimpleGeneric(int len)
        {
            values = new T[len];
            index = 0;
        }
        public void Add(params T[] args)
        {
            foreach (T item in args)
            {
                values[index++] = item;
            }
        }
    public void print()
        {
            foreach (T item in values)
            {
                Console.Write(item + ",");
            }
            Console.WriteLine();
        }
    
    }
    class Program
    {
        static void Main(string[] args)
        {
            SimpleGeneric<Int32> gintegers = new SimpleGeneric<int>(10);
            SimpleGeneric<double> gDoubles = new SimpleGeneric<double>(10);
            gintegers.Add(1, 2);
            gintegers.Add(1, 2, 3, 4, 5, 6, 7);
            gintegers.Add(10);

            gDoubles.Add(10.0, 12.4, 37.5);
            gintegers.print();
            gDoubles.print();
        }
    }

 

namespace exceptionTestapp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int x= 10, y=5, value=0; //선언이라 에러날 일없는부분
             // 최근에 나온 문자열 방식 더 쉽다 .
            //예외처리//
            //비정상적으로 종료 될 거 같은 위치에 try구문으로 //
            //일단 throw 로 던지는 걸 catch로 받기 
            //try 예외 검사 catch  예외처리 finally 마무리
            try
            {
                value = x / y;
                Console.WriteLine($"{x}/{y}={value}");//에러 날만한  부분을 트라이에 적었다.
                throw new Exception("사용자 에러"); // 사용자가 일부러 에러내는 코드 exception을 분리해야한다.
            }
            catch(DivideByZeroException ex)
            {
                Console.WriteLine("2.y의 값을 0보다 크게 입력하세요");
            }
            catch (Exception ex)
            {
                Console.WriteLine("3."+ex.Message); //에러가 날경우에 명령어
                
            }
            finally
            {
                Console.WriteLine("4.프로그램이 종료했습니다.");//에러가 나든 안나든 마지막에 이루어질 출력문 (무조건실행)
            }
        }
    }
}

윈도우 폼

단순히 폼이라고 부름

운영체제에서 제공하는 기본적인 화면 단위인 창을 말하는 개념

폼클래스 

윈도우 폼을 나타내는 클래스 

콤포넌트 클래스 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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 ClockApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime now = DateTime.Now;
            label1.Text = now.ToString("HH:mm:ss");
        }
    }
}

 

 

 

 

더블 클릭으로 코드 창으로 이동

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 ClockApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime now = DateTime.Now;
            label1.Text = now.ToString("HH:mm:ss");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("Form 로드시 발생");
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            MessageBox.Show("Form 클로즈시 발생");

        }

        private void Form1_Activated(object sender, EventArgs e)
        {
            MessageBox.Show("Form 활성화시 발생");

        }
    }

 

 

 

 

 

 

 

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 ClockApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime now = DateTime.Now;
            label1.Text = now.ToString("HH:mm:ss");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("Form 로드시 발생");
        }

      
        private void Form1_FormClosing_1(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("진짜 닫을래?", "경고", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
            {
                e.Cancel = false;  //취소를 안시켜서 종료
            }
            else
            {
                e.Cancel = true; // 취소시키니까 종료 안됨
            }
            }
        }
    }

버튼 동일한거 생성원하면  컨트롤 누르고 드레그하면 동일한 버튼이 생성가능

 

 

 

 

못해먹겠네

반응형