is a valid approach의 서식 지정에 사용하는 방법입니다. 여기에 몇 가지 문제가있을 수 있습니다. 확인하십시오 :
- 기본 데이터 유형
DateTime
및 하지 유형 string
이다. string
형식은 예상대로 형식을 적용하지 않습니다. (아래 예제의 1 및 2 열을 참조하십시오.)
- 개별
DataGridViewTextBoxCell.Style.Format
은 원하는 형식과 다른 것으로 설정되어 있지 않습니다. 이렇게하면 열 서식이 무시됩니다. (. 참조 아래 예제에서 3 열)
예는 출력에서 볼 수 있듯이
this.dataGridView1.ColumnCount = 4;
this.dataGridView1.RowCount = 1;
this.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
DateTime date = DateTime.Now;
this.dataGridView1[0, 0].Value = date;
this.dataGridView1[1, 0].Value = date.ToString();
this.dataGridView1[2, 0].Value = date.ToString("MM/yyyy");
this.dataGridView1[3, 0].Value = date;
this.dataGridView1[3, 0].Style.Format = "MM/yyyy";
this.dataGridView1.Columns[0].DefaultCellStyle.Format = "dd/yyyy";
this.dataGridView1.Columns[1].DefaultCellStyle.Format = "dd/yyyy";
this.dataGridView1.Columns[2].DefaultCellStyle.Format = "dd/yyyy";
this.dataGridView1.Columns[3].DefaultCellStyle.Format = "dd/yyyy";
:
Columns[0]
에는 DateTime
이 포함되어 있고 올바르게 형식은 "dd/yyyy"
입니다.
Columns[1]
에는 string
이 포함되어 있으며 "dd/yyyy"
으로 다시 포맷 할 수 없습니다.
Columns[2]
의 형식이 string
이고 "dd/yyyy"
으로 다시 포맷 할 수 없습니다.
Columns[3]
에는 DateTime
이 포함되어 있으며 형식은 "MM/yyyy"
의 셀 형식으로 재정의됩니다.
그냥 DateTime
객체가 아니라 어떤 string
표현을 사용하여 셀 값을 설정,이 문제를 해결하려면.일부 외부 소스로부터 데이터를 얻고있는 경우
과 이미 유형
string
, 당신이 그것을
Parse
하지만주의 할 수의
DateTime
개체의 누락 된 부분이 디폴트 될 것입니다 아무것도 거기에 정말 당신은 할 수 없습니다 DateTime date = DateTime.Parse("10/2016");
Console.WriteLine("Output: {0}", date.ToString());
// Output: 10/1/2016 12:00:00 AM
검증
: 원래의 전체 데이터를하지 않고 그것에 대해 할 사용자 입력의 유효성을 검사 (및 편집에 서식 잃고) 당신의 주요 관심사 인 경우 691,363,210 는 잘못된 편집을 취소 확인을 위해 다음의 방법을 고려하십시오
는 private void DataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
DateTime parsed;
if (!DateTime.TryParse(e.FormattedValue.ToString(), out parsed))
{
this.dataGridView1.CancelEdit();
}
}
DataGridView.CellFormatting
이벤트 핸들러를 사용하여 형식을 다시 적용하기위한 this answer와 결합. (이는 데이터 유형이 string
이 아닌지 확인해야 할 필요성을 무효화하지만 이벤트가 자주 발생하므로 비용이 많이 듭니다.)
문제를 해결할 수 있었습니까? – OhBeWise