ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 고급 컨트롤
    C# 2020. 6. 17. 17:09

    리스트 뷰

     

    리스트 상자와 유사한 형태를 지니며 목록을 구조적으로 장식할 수 있는 컨트롤

     

    리스트 상자 + 추가적인 정보 (아이콘, 설명)

     

    형태

     

    View 프로퍼티의 값에 따라 다양한 형태를 가짐

     - System.Windows.Forms 네임스페이스에 포함된 View 열거형을 값으로 가짐

     - View 열거형

    SelectedItems 프로퍼티

    리스트 뷰에서 선택된 항목을 저장하는 프로퍼티

    반환형

    ListViewItem

    클래스형 리스트 뷰의 MultiSelect 프로퍼티가 거짓일 경우

    ListViewItem

    클래스의 배열형 리스트 뷰의 MultiSelect 프로퍼티가 참일 경우

     

    이미지를 배열처럼 사용 가능

     

    리스트 뷰

     

     

     

    열 편집 먼저

     

    항목 추가

    리스트 박스을 이용해서 뷰의 보여주기 형식을 바꾼다.

     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                switch (comboBox1.SelectedIndex)
                {
                    case 0: //LargeIcon
                        listView1.View = View.LargeIcon;
                        break;
                    case 1: //Details
                        listView1.View = View.Details;
                        break;
                    case 2: //SmallICOn
                        listView1.View = View.SmallIcon;
                        break;
                    case 3: //List
                        listView1.View = View.List;
                        break;
                    case 4: //tile
                        listView1.View = View.Tile;
                        break;
                    default:
                        listView1.View = View.LargeIcon;
                        break;
    
                }
            }
            
            private void listView1_SelectedIndexChanged(object sender, EventArgs e)
            {
                foreach (ListViewItem item in listView1.SelectedItems)
                {
                    ListViewSubItemCollection subItem = item.SubItems;
                    //컴파일 과정에서 selectedItem[0]이 subitem[0]에 들어가고 다음 subitem[1]에 국가번호
                    label1.Text = subItem[0].Text + "의 국가번호는 " + subItem[1].Text + "입니다.";
                }
            }

     

     

    트리 뷰

    목록을 계층적으로 보여주기 위한 컨트롤

    - 노드를 계층적으로 표시

    - 노드에 이미지 아이콘을 추가할 수 있음

    트리 뷰의 노드

    - 트리 노드 편집기를 통해 생성

    - TreeNode 클래스의 객체

    - TreeView 컨트롤의 Nodes 프로퍼티에 TreeNodeCollection 형으로 저장

    - TreeNodeCollection 클래스의 메소드를 통해 노드의 편집이 가능함

      

    TreeNodeCollection 클레스의 메소드

    트리 뷰의 노드는 TreeNode 클래스의 객체

    TreeNodeCollection 클래스의 메소드를 사용할 경우

    -TreeNode 클래스의 객체를 생성해야 함

    -TreeNode 클래스의 생성자

        public TreeNode(string label);

        public TreeNode(string label, int idx1, int idx2);

             * label : 노드 이름에 해당하는 문자열

             * idx1 : 노드가 선택되지 않았을 때의 이미지 인덱스

             * idx2 : 노드가 선택되었을 때의 이미지 인덱스

     

     

     

    도구의 위치를 고정시키는 역할을 한다. 활성화 하면 화면 크기에 따라 움직인다. 여러가지 해보면서 원하는 걸로 하면된다.

     

    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 TreeViewApp
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
    
            }
    
            private void Form1_Activated(object sender, EventArgs e)
            {
                treeView1.ExpandAll(); //항목을 다 펼쳐서 나오게 한다.
                //treeView1.CollapseAll(); //항목을 다 닫아서 나오게 한다.
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                if(textBox1.Text != "" && treeView1.SelectedNode != null)
                {
                    treeView1.SelectedNode.Nodes.Add(new TreeNode(textBox1.Text,2,2));
                    textBox1.Text = "";
                    textBox1.Focus();
                }
                else
                {
                    MessageBox.Show("노드 추가할 이름을 넣고, 추가할 위치의 폴더를 선택하세요");
                }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                treeView1.Nodes.Remove(treeView1.SelectedNode);
            }
        }
    }
    

     

    수치적 업다운 컨트롤의 작성

     

     

     

    트랙바(슬라이더)

    슬라이더와 눈금으로 구성

    슬라이더의 이동

    - 마우스 드래그

    - 슬라이더의 좌우 공간 클릭

    - 마우스 휠의 회전

    - 키보드의 좡 방향키 페이지 업다운키

     

    프로그래스 바

    작업의 진행상황을 보여주는 컨트롤 (사용자의 편의를 위한 컨트롤)

    - 좌측에서 우측으로 사가형의 조각을 채우면서 진행

    - 애플리케이션의 설치과정이나 파일 복사과정에서 사용

    미니멈과 맥시멈을 사용

    private void button1_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < 100000; i++)
                {
                    
                        progressBar1.Value = i;
                    
                }
                
            }

     

     

    타이머

    주기적인 간격으로 이벤트를 발생시키는 컴포넌트* 디자인이아님

    - 배경작업을 처리할 때 주로 사용

    - 일정한 간격에 따라 Tick 이벤트를 발생

        * Interval 프로퍼티를 통해 간격을 설정

        * 밀리초 (millisecond, 1/1000초)를 사용

    - 주기적으로 발생시키기 위해서는 Enable 프로퍼티를 참으로 설정

    - 항상 Interval 프로퍼티의 간격에 따라 Tick 이벤트가 발생하는 것은 아님

        * Tick 이벤트가 다른 이벤트에 비해 우선 순위가 낮기 때문 (조금씩 간격의 차이가 난다.)

    타이머 컴포넌트의 추가

    - [도구상자] [Timer]를 선택하여 폼에 추가

     

    1000 = 1초

    6000 = 6초 으로 계산

     

    이미지리스트와 타이머를 넣는다.

    ImageList1 그림넣기

     private void timer1_Tick(object sender, EventArgs e)
            {
                //반복문 넣으면 뻑남
                index %= imageList1.Images.Count;
                label1.Image=imageList1.Images[index++];
            }

    나는 것처럼 보인다.

    'C#' 카테고리의 다른 글

    C# DB연동  (0) 2020.06.18
    C# 윈폼 Chart 컨트롤  (0) 2020.06.18
    C# 고급폼 (2020.06.16)  (0) 2020.06.16
    C# 윈폼 컨트롤(2020.06.16)  (0) 2020.06.16
    C# 윈폼 계산기  (0) 2020.06.15
Designed by Tistory.