티스토리 뷰

======================================================

안녕하세요 Doridori 입니다. 


드디어 새로운 강의로 돌아 왔습니다. ^^


기존 강의를 마무리 하면서 기존 강의를 기본편으로 정하고 이번에 진행 할 강의는 응용편으로 진행하기로 하였습니다. 

(강좌번호는 이어서 진행 할 예정입니다.)


기존에 C#에서 꼭 알아야 할 구문들이나 정의들에 대해서 진행 했다면 이번 강의 부터는 자주 사용되는 API들이나 기능들에 대해서 정리해 볼 생각입니다. 

(원래 제가 하고 싶었던 내용들인데 일하면서 느꼈던 이런저런 이야기들이 들어갈 것 같습니다. ^^:;)


환절기 감기에 걸려 목이 안좋아서 늦어지게 되었는데 다시 열심히 달려 보도록 하겠습니다. 


감기 조심하시고 화이팅!! 입니다.~!


※ 33강인줄 알고 33강으로 막 정리를 했는데 다 만들고 보니 32강이어서 제목만 32강으로 바꿨습니다. m(_._)m

======================================================


제목 표시줄 사용하기 (AssemblyVersion)


Source UI) Study_32_AssemblyVersion (UI).zip

Soruce 전체) Study_32_AssemblyVersion.zip

교재) 32. 제목 표시줄 사용하기 (AssemblyVersion).pdf









제목 표시줄 사용 하기 입니다. 


제목 표시줄의 경우 실무에서는 사용하는 형태를 이미 정해 놓는경우가 많아서 잘 사용되지 않습니다만 내용을 알아두면 좋을듯 합니다. 


제목표시줄에 표시되는 항목을 4가지 정도로 정리해 봤는데 일반적으로 사용되는 부분들이고, 역시나 입맛대로 바꿔서 쓰셔도 상관없습니다.  

프로그램은 코딩을 하는 사람 마음이니까요 ^^ 

(물론 돈주는 고객이 있다면 고객마음이죠~!)



UI) 


UI도 매우 간단 합니다. 


기본적으로 정해져 있는 표시줄에 내용만 채우면 되거든요 ㅎㅎ


이번 강의는 기본강의 외 


"Dori Dori 선생님 dictionary<key,stack<class>> 이런 구조의 강의를 볼수있을까요" 라는 내용의 질문을 올려주셔서 (뒷부분은 개인적으로 조금 부끄러워서 짤랐습니다. ^^) 실무에서 필요하다고 하셔서 어렵게 생각하시지 말라고 간단하게 정리해 보았습니다. 그러면서 필요한 UI를 간단하게 추가해 보았습니다.

복잡한 형태의 dictionary 사용하기) 결론은 dictionary 의 Value 값에 또다른 자료 구조형태가 들어간 모양인데 어렵게 보이는 경우가 분리해서 보면 간단한게 소스를 길게 붙여서 적어놓아서 그런경우가 많습니다. 복잡해 보이면 코드를 다 분리 시켜 놓고 뜯어보면 생각보다 안복잡한 경우가 많다고 볼수 있습니다. 어렵게 생각하지 마시고 구조만 머리속에 넣고 천천히 따라가 보시면 쉽게 해결 가능할것 같습니다.





강의)


짧게 짧게 치고 빠지려고 했는데 말하다 보니 길어 졌네요 =0=;;


길어져서 추가 강의를 따로 쪼개려고 하다가 그냥 한강의로 쭉 달아서 진행 했습니다. 







Source)


이거 꿀팁이라는 느낌인데 그냥 AssemblyVersion 가져오는 부분부터 시간 변환하는 부분까지 한방에 복사해서 사용하시면 됩니다. 


복사해서 필요한 부분만 수정해서 사용하시면 되고 크게 고민 안해도 되게 짜놓았습니다. 


코드 가져가시라는 의미에서 만든 강의라고 보시면 됩니다. ^^;;



CSize)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _33.Title
{
    class CSize
    {
        string _Name = string.Empty;
        public string Name { get => _Name; set => _Name = value; }
        
        int _Width = 0;
        public int Width { get => _Width; set => _Width = value; }
        
        int _Height = 0;
        public int Height { get => _Height; set => _Height = value; }
    }
}
 
cs



Form1)


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace _33.Title
{
    public partial class Title : Form
    {
        public Title()
        {
            InitializeComponent();
        }
 
        private void Title_Load(object sender, EventArgs e)
        {
            Version oVersion = Assembly.GetEntryAssembly().GetName().Version;
            this.Text = string.Format("{0} Ver.{1}.{2} / Build Time ({3}) - {4}""Title 사용하기", oVersion.Major, oVersion.Minor, GetBuildDataTime(oVersion), "프로그램 상태");
 
            GetBuildDataTime(oVersion);
 
        }
 
 
        public DateTime GetBuildDataTime(Version oVersion)
        {
            string strVerstion = oVersion.ToString();
 
            // 날짜 등록
            int iDays = Convert.ToInt32(strVerstion.Split('.')[2]);
            DateTime refData = new DateTime(200011);
            DateTime dtBuildDate = refData.AddDays(iDays);
 
            // 초 등록
            int iSeconds = Convert.ToInt32(strVerstion.Split('.')[3]);
            iSeconds = iSeconds * 2;
            dtBuildDate = dtBuildDate.AddSeconds(iSeconds);
 
            // 시차 조정
            DaylightTime daylighttime = TimeZone.CurrentTimeZone.GetDaylightChanges(dtBuildDate.Year);
 
            if (TimeZone.IsDaylightSavingTime(dtBuildDate, daylighttime))
            {
                dtBuildDate = dtBuildDate.Add(daylighttime.Delta);
            }
 
 
            return dtBuildDate;
        }
 
 
        // Dictionary 예제
 
        Dictionary<string, Stack<CSize>> oDic = new Dictionary<string, Stack<CSize>>();
 
        private void btnSizeCheck_Click(object sender, EventArgs e)
        {
            fControlSizeRead();
            fControlSizeWrite();
        }
 
       
 
        private void fControlSizeRead()
        {
            oDic.Clear();
 
            // Button 등록
            Stack<CSize> sButton = new Stack<CSize>();
            foreach (var item in gboxControl.Controls)
            {
                if (item is Button)
                {
                    Button obtn = item as Button;
 
                    CSize oSize = new CSize();
                    oSize.Name = obtn.Name;
                    oSize.Width = obtn.Width;
                    oSize.Height = obtn.Height;
 
                    sButton.Push(oSize);
                }
            }
            oDic.Add("BUTTON", sButton);
 
 
            //  등록
            Stack<CSize> sLabel = new Stack<CSize>();
            foreach (var item in gboxControl.Controls)
            {
                if (item is Label)
                {
                    Label oLabel = item as Label;
 
                    CSize oSize = new CSize();
                    oSize.Name = oLabel.Name;
                    oSize.Width = oLabel.Width;
                    oSize.Height = oLabel.Height;
                    
                    sLabel.Push(oSize);
                }
            }
            oDic.Add("LABEL", sLabel);
 
        }
 
 
        private void fControlSizeWrite()
        {
            // Dic에서 Button 정보를 가져옴
            Stack<CSize> sButton = oDic["BUTTON"];
            foreach (CSize item in sButton)
            {
                string strResult = string.Format("Control : Button, Name : {0}, Size ({1}, {2})", item.Name, item.Width, item.Height);
                lboxResult.Items.Add(strResult);
            }
 
            Stack<CSize> sLable = oDic["LABEL"];
            foreach (CSize item in sLable)
            {
                string strResult = string.Format("Control : Label, Name : {0}, Size ({1}, {2})", item.Name, item.Width, item.Height);
                lboxResult.Items.Add(strResult);
            }
        }
 
    }
}
 
 
cs




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함