using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System. ...
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace Test{ public partial class Form1: Form { DateTimePicker dtp = new DateTimePicker(); //實例化一個DateTimePicker控制項 Rectangle _Rectangle; public Form1() { InitializeComponent(); dataGridView1.Controls.Add(dtp); //將時間控制項加入DataGridView dtp.Visible = false; //先不顯示 dtp.Format = DateTimePickerFormat.Custom; //設置日期格式,2017-11-11 dtp.TextChanged += new EventHandler(dtp_TextChange); //為時間控制項加入事件dtp_TextChange } /*************時間控制項選擇時間時****************/ private void dtp_TextChange(object sender, EventArgs e) { dataGridView1.CurrentCell.Value = dtp.Text.ToString(); //時間控制項選擇時間時,將時間內容賦給所在的單元格 } /****************單元格被單擊,判斷是否是放時間控制項的那一列*******************/ private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 0) { _Rectangle = dataGridView1.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; //顯示控制項 } else dtp.Visible = false; } /***********當列的寬度變化時,時間控制項先隱藏起來,否則單元格寬高變化時時間控制項無法跟著變***********/ private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) { dtp.Visible = false; } /***********滾動條滾動時,單元格位置發生變化,也隱藏時間控制項,否則時間控制項位置不動就亂了********/ private void dataGridView1_Scroll(object sender, ScrollEventArgs e) { dtp.Visible = false; } }}