문제

DataGridView는 System.datatime 유형 인 Date Digh라는 열이 있습니다. 이 날짜를 월간 칼렌더에 넣고 싶습니다. 칼럼을 반복해야합니까? 캐스트해야하나요?

도움이 되었습니까?

해결책

각 열에서 날짜를 얻으려면 예에서 열의 모든 행을 반복해야합니다. 날짜를 텍스트로 표시 할 때 사용하여 구문 분석해야합니다. DateTime.Parse 또는 DateTime.TryParse 행동 양식.

편집 :- 이것을 양식 응용 프로그램이라고 가정합니다. 나는 추가했다 DataGridView, ㅏ MonthCalendar 그리고 a Button. 나는 GridView에서 날짜를 얻을 수 있었고 Cal의 달에 선택된 날짜를 대담하게했습니다.

public Form2()
{
    InitializeComponent();

    CreateData();
}

private void CreateData()
{
    var dtb = new DataTable();
    dtb.Columns.Add("Column1");
    dtb.Columns.Add("Column2");
    dtb.Columns.Add("Column3");

    var dt = DateTime.Now;
    var rand = new Random();

    for (var i = 0; i < 10; i++)
    {
        var r = dtb.NewRow();

        r.ItemArray = new object[] {dt.ToString("ddd"), dt.ToString("MMM"), dt};
        dt = dt.AddDays(rand.Next(30));

        dtb.Rows.Add(r);
    }

    dataGridView1.DataSource = dtb;
}

private void button1_Click(object sender, EventArgs e)
{
    var bds = new List<DateTime>();
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        DateTime dt;
        var b = DateTime.TryParse(row.Cells[row.Cells.Count - 1].Value+"", out dt);
        if(!b) continue;

        bds.Add(dt);
    }

    cal.BoldedDates = bds.ToArray();
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top