สร้าง DateTimePicker ให้สามารถเลือกใน DataGridView ได้
ประกาศตัวแปร
DateTimePicker dtp = new DateTimePicker(); Rectangle _Rectangle;
ส่วน Control
// dtp in dgv dgvPMList.Controls.Add(dtp); dtp.Visible = false; dtp.Format = DateTimePickerFormat.Custom; dtp.TextChanged += new EventHandler(dtp_CloseUp);
Set Columns
ColumnText = null; ColumnText = new DataGridViewTextBoxColumn(); ColumnText.Name = "NextEndDate"; ColumnText.DataPropertyName = "NextEndDate"; ColumnText.HeaderText = "NextEndDate"; ColumnText.ToolTipText = "NextEndDate"; ColumnText.ReadOnly = false; ColumnText.Width = 100; ColumnText.DefaultCellStyle.Format = "dd/MM/yyyy"; ColumnText.DefaultCellStyle.BackColor = Color.AntiqueWhite; ColumnText.HeaderCell.Style.BackColor = Color.AntiqueWhite; this.dgvPMList.Columns.Add(ColumnText);
นำค่าจาก dtp มาเก็บใน dgv ปัจจุบัน
private void dtp_CloseUp(object sender, EventArgs e) { dgvPMList.CurrentCell.Value = dtp.Text.ToString(); }
เลือก Event ต่าง ๆ ส่วนในเคส เป็นชื่อ columns ของเรา
private void dgvPMList_CellClick(object sender, DataGridViewCellEventArgs e) { if (dtp.Visible == true) { dtp.Visible = false; } else { switch (dgvPMList.Columns[e.ColumnIndex].Name) { case "NextEndDate": _Rectangle = dgvPMList.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); dtp.Size = new Size(_Rectangle.Width, _Rectangle.Height); dtp.Location = new Point(_Rectangle.X, _Rectangle.Y); dtp.Visible = true; break; } } } private void dgvPMList_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) { dtp.Visible = false; } private void dgvPMList_Scroll(object sender, ScrollEventArgs e) { dtp.Visible = false; }
result
Set Time In Dgv
dgvOvertime.Controls.Add(dtp); dtp.Visible = false; dtp.Format = DateTimePickerFormat.Custom; dtp.CustomFormat = "HH:mm"; dtp.ShowUpDown = true; dtp.TextChanged += new EventHandler(dtp_CloseUp);