[개발] C#, .Net

[C#, .NET, spread] 개발 시 유용한 코드 모음(단축키, 컬럼, 로우 등)

  • -
반응형

0. 단축키

Ctrl + ,: 파일 검색 또는 Go To All 명령 실행

Ctrl + F: 현재 문서에서 텍스트 검색

Ctrl + Shift + F: 프로젝트 전체에서 텍스트 검색

Ctrl + Shift + H: 대체 창 열기

 

 

 

 

 

1. 콤보박스 입력막는 코드 

  comboxName.KeyPress += new KeyPressEventHandler(cmb_KeyPress); 


// 콤보박스 입력 막는 코드
public void cmb_KeyPress(object sender, KeyPressEventArgs e)
{
     e.Handled = true;
}

 

 

 

 

 

2.  특정 컬럼 정렬 세팅 코드

fpSpread.Sheets[0].Columns[0].HorizontalAlignment = CellHorizontalAlignment.Left;

 

 

 

 

 

 

3. 시프레드 초기화 코드

fpSpread.Sheets[0].Rows.Clear();

 

 

 

 

 

 

4. 문자열.ToString() 쓰는 것보다 Convert.ToString(문자열) 쓰는게 null오류 피할 수 있음

 

 

 

 

 

 

5. 리스트 로우(행) 카운트 선언해주는 코드

fpSprea1.Sheets[0].Rows.Count = 원하는 행 수;

 

 

 

 

 

 

6. 스프레드 조회내용 없을 때 처리 코드

if (fpSpread.Sheets[0].RowCount < 1)
{
	MessageBox.Show("조회된 데이터가 없습니다.");
    return;
}

 

 

 

 

 

7. 자리수 세팅 및 자리 수 미달 시 0으로 채워넣는 코드 (Leave이벤트 사용)

private void textBox_Leave(object sender, EventArgs e)
{
    TextBox textBox = (TextBox)sender; // 이벤트 핸들러를 호출한 TextBox
    int desiredLength = 8; // 원하는 자릿수 (7자릿수 예시)

    string formattedNumber = textBox.Text.PadLeft(desiredLength, '0');
    textBox.Text = formattedNumber;
}

 

 

 

 

 

8. DateSet 건수 표시 코드

DataSet DS = new Repository().Select(_MODEL);
if(DS.Tables[0].Rows.Count > 0)
{
    int rowCount = DS.Tables[0].Rows.Count;
    lblStateMsg.Text = rowCount + " 건";
}

 

 

 

 

 

 

9. 월일 세팅 코드 ex. 0101 > 01-01

private void txtMonthDay_TextChanged(object sender, EventArgs e)
        {
            TextBox clickedTextBox = (TextBox)sender;
            var tempStr = clickedTextBox.Text;

            // 숫자가 4자리인 경우에만 처리
            if (tempStr.Length == 4 && int.TryParse(tempStr, out int number))
            {
                // 처음 2자리를 월로, 나머지 2자리를 일로 추출
                string monthPart = tempStr.Substring(0, 2);
                string dayPart = tempStr.Substring(2, 2);

                if (int.TryParse(monthPart, out int month) && int.TryParse(dayPart, out int day))
                {
                    if (month >= 1 && month <= 12)
                    {
                        if (day >= 1 && day <= DateTime.DaysInMonth(DateTime.Now.Year, month))
                        {
                            // 유효한 월 및 일 값인 경우

                            // 월과 일을 "-"로 연결하여 새로운 텍스트 생성
                            string resultText = $"{month:D2}-{day:D2}";

                            // TextBox에 결과 텍스트 설정
                            clickedTextBox.Text = resultText;

                            // 커서 위치를 텍스트 끝으로 이동
                            clickedTextBox.SelectionStart = resultText.Length;
                        }
                        else
                        {
                            // 일이 유효하지 않은 값일 때 에러 처리
                            MessageBox.Show("월, 일을 입력해주세요. ex) 0101");
                            clickedTextBox.Text = "";
                        }
                    }
                    else
                    {
                        // 월이 유효하지 않은 값일 때 에러 처리
                        MessageBox.Show("월, 일을 입력해주세요. ex) 0101");
                        clickedTextBox.Text = "";
                    }
                }

            }

        }

 

 

 

 

 

 

10. .net 도구상자 안보일때 Ctrl + Alt + X

 

 

 

 

 

11. 천단위 컴마

    00.Text = string.Format("{0:#,###}", num[5]);
    00.Text = string.Format("{0:#,###}", num[3]);

 

 

 

 

 

 

 

12. 컬럼 헤더 병합 코드

fpSpread.Sheets[0].AddColumnHeaderSpanCell(0, i, 1, 3);

 

 

 

 

 

 

 

 

13. 날짜 비교 유효성 참고 코드

string inputDateText = txtDATE.Text;

if (DateTime.TryParse(inputDateText, out DateTime inputDate) && inputDate < DateTime.Today)
{
    MessageBox.Show("금일보다 작은일자는 입력할 수 없습니다", "확인");
    txtDATE.Select();
    txtDATE.Text = DateTime.Now.ToString("yyyy-MM-dd");
    return false;
}

 

 

 

 

 

 

14. 폰트 및 글꼴 스타일 처리 코드

fpSpread.Font = new Font("굴림체", 10F, System.Drawing.FontStyle.Regular);

 

 

 

 

 

 

15. 퍼센트 숫자형 코드

 var formattedValue = string.Format("{0:F1}%", numericValue);

 

 

 

 

 

 

16. 클릭한 셀 > 해당 로우 색칠하는 코드

private void fpSpread_CellClick(object sender, CellClickEventArgs e)
{
    int rowIndex = e.Row;

    if(rowIndex >= 0 && rowIndex < fpSpread.Sheets[0].RowCount-1)
    {
        int lastRow = fpSpread.Sheets[0].RowCount - 1;
        // 이전에 선택된 행의 배경색을 원래대로 돌리기
        foreach (FarPoint.Win.Spread.Row row in fpSpread.Sheets[0].Rows)
        {
            if (row.Index != lastRow)
            {
                row.BackColor = Color.Empty;
            }
        }
        fpSpread.Sheets[0].Rows[rowIndex].BackColor = Color.Yellow;

    }
}

 

 

 

 

 

 

17. 년 월 세팅 메서드

private void txtYY_Leave(object sender, EventArgs e)
{
    if (txtYY.Text.Length == 2)
    {
        int yearValue;
        if (int.TryParse(txtYY.Text, out yearValue))
        {
            int threshold = 50;
            int century = (yearValue < threshold) ? 2000 : 1900;
            int fullYear = century + yearValue;

            txtYY.Text = fullYear.ToString("D4");
        }
    }
}

private void txtMM_Leave(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(txtMM.Text))
    {
        if (int.TryParse(txtMM.Text, out int monthValue))
        {
            if (monthValue < 1 || monthValue > 12)
            {
                // Handle the case when the input is not between 1 and 12
                MessageBox.Show("1에서 12 사이의 수만 입력 가능합니다.", "확인");
                txtMM.Text = "";
                txtMM.Focus();
            }
            else
            {
                // Format the month as two digits
                txtMM.Text = monthValue.ToString("D2");
            }
        }
    }
}


private void txtYY_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
    {
        e.Handled = true;
    }
}

private void txtMM_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
    {
        e.Handled = true;
    }
}

 

 

 

 

 

 

 

18. 마지막 달인 경우 년, 월 세팅 코드

 if (Convert.ToInt32(fpSpread.Sheets[0].ColumnHeader.Cells[0, i].Text) == lastDay)
{
    temp = Convert.ToInt32(month) + 1;
    if (temp > 12) // 마지막 달인 경우 년도, 월 세팅
    {
        int yearValue;
        if (int.TryParse(year, out yearValue))
        {
            year = Convert.ToString(yearValue + 1);
        }
        temp -= 12;
    }
}
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.