DataGridViewColumnEventArgs e) { dtp.Visible = false; } /**

时间:2022-02-10 08:44:38

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;

        }