comboxName.KeyPress += new KeyPressEventHandler(cmb_KeyPress);
// 콤보박스 입력 막는 코드
public void cmb_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
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 = "";
}
}
}
}
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;
}
}