퇴근5분전

 

 상세 등록화면을 구성하는데 디자이너로 쉽게 그렸는데. 여기에 많은 입력 컨트롤들의 초기화 코드, 이벤트 처리 코드, 값 셋팅코드를 추가하는데

하다보니 너무 졸립더라.

 예전 버전에서는 디자인툴에서 포함되어서 생성이 되었기에 디자이너에 넣어봤는데.. 뭔가 부족한 느낌이??? 일단 이름 지정을 일일이 해줘야 하는게

불편해... 귀찮고... 또 한번 귀차니즘 발동!!!

 

 

 

그래서 만들어진 소스 변환기!!

 

가장 왼쪽 텍스트박스 [코드:코드명] 묶음으로 등록하고 Create 클릭 >

중간에 리스트박스에 코드명으로 바인딩됨.

 

바인딩 된 항목을 하나 하나 클릭하면서 우측에 이름, 설명, 컨트롤 타입, 선택, 필수관련정보를 수정하면 됨.

 

리스트 박스에 선택된 것들은 파란색 글씨로 변환 대상으로 보여짐.

필수 항목을 체크한것은 주황색으로 표시됨.

 

이걸 초기화소스, 이벤트소스, 데이타 바인딩 소스, 유효성 체크 소스를 각각 클릭하면 지정된 포멧으로 소스를 변환해서

클립보드에 붙여줌.

 

저장하면

지정된 디렉토리 아래 ID.txt 에 컬럼목록이 저장되고,

Meta라는 폴더 아래에 각 컬럼별로 데이타를 저장해둔다.

 

열기하면

지정된 디렉토리 아래 파일을 읽어들이고 각 컬럼의 메타정보를 Meta아래서 읽어와서 셋팅해준다.

 

# 리스트박스에 색상표시 코드

 

 

 private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
        {
            e.DrawBackground();
            e.DrawFocusRectangle();
            ColumnInfo ci = columns.Values.ElementAt(e.Index);
            if (ci.IsSelected)
            {

                if (ci.IsRequired)
                {
                    TextRenderer.DrawText(e.Graphics, ci.Name, new Font(e.Font.FontFamily, e.Font.Size, FontStyle.Bold), e.Bounds.Location, Color.Orange);
                }
                else
                {
                    if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
                    {
                        TextRenderer.DrawText(e.Graphics, ci.Name, new Font(e.Font.FontFamily, e.Font.Size, FontStyle.Bold), e.Bounds.Location, Color.White);
                    }
                    else
                    {
                        TextRenderer.DrawText(e.Graphics, ci.Name, new Font(e.Font.FontFamily, e.Font.Size, FontStyle.Bold), e.Bounds.Location, Color.DodgerBlue);
                    }
                }
            }
            else
            {
                TextRenderer.DrawText(e.Graphics, ci.Name, e.Font, e.Bounds.Location, e.ForeColor);
            }
        }

 

# 리스트박스에 아이템을 입력 컨트롤들과 바인딩하는 코드

 

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            chkSelected.DataBindings.Clear();
            chkRequire.DataBindings.Clear();
            lbName.DataBindings.Clear();
            txtDesc.DataBindings.Clear();
            cboControlType.DataBindings.Clear();

            // 선택시!!
            ColumnInfo CurrentInfo = listBox1.SelectedItem as ColumnInfo;
            if (CurrentInfo == null) return;

            chkSelected.DataBindings.Add("Checked", CurrentInfo, "IsSelected");
            chkRequire.DataBindings.Add("Checked", CurrentInfo, "IsRequired");
            lbName.DataBindings.Add("Text", CurrentInfo, "Name");
            txtDesc.DataBindings.Add("Text", CurrentInfo, "Desc");
            cboControlType.DataBindings.Add("Text", CurrentInfo, "ControlType");
        }

 

 

 

 

'# 9) My Program(.NET)' 카테고리의 다른 글

Visual Studio AddIns] Code Tip History  (0) 2016.06.03
Visual Studio AddIns 개발  (0) 2016.04.29
작업이력관리툴 ~!!] 수정  (3) 2015.10.10
PGMMNG] DataGrid 소스 제너레이터?  (0) 2015.10.01
SQL_FMT] 요소들을 분해!!  (0) 2015.09.09