2012年1月30日 星期一

DataGridView 結合 DateTimePicker

參考引用
--
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DataGridViewDateTimePicker
{
    public partial class MainForm : Form
    {
        private bool _CheckChange = false;

        public MainForm()
        {
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            // TODO: 這行程式碼會將資料載入 'database1DataSet.Table1' 資料表。您可以視需要進行移動或移除。
            this.table1TableAdapter.Fill(this.database1DataSet.Table1);

            //設定DateTimePicker的高度
            this.dateTimePicker1.Height = this.dataGridView1.Height;
        }

        //將DateTimePicker控制項定位在DataGridView的Column上
        private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (this.dataGridView1.Columns[e.ColumnIndex].HeaderText == "date")
            {
                Rectangle r = this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false);
                r = this.dataGridView1.RectangleToScreen(r);
                this.dateTimePicker1.Location = this.RectangleToClient(r).Location;
                this.dateTimePicker1.Size = r.Size;
                this._CheckChange = true;
                this.dateTimePicker1.Text = this.dataGridView1.CurrentCell.Value.ToString();
                this._CheckChange = false;
                this.dateTimePicker1.Visible = true;
            }
            else
            {
                this.dateTimePicker1.Visible = false;
            }
        }

        //改變Column的值
        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            if (_CheckChange) return;
            this.dataGridView1.CurrentCell.Value = this.dateTimePicker1.Text;
        }
    } 
}

沒有留言:

張貼留言