2012年1月30日 星期一

DataGridView 結合 DateTimePicker

參考引用
--
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8.  
  9. namespace DataGridViewDateTimePicker
  10. {
  11. public partial class MainForm : Form
  12. {
  13. private bool _CheckChange = false;
  14.  
  15. public MainForm()
  16. {
  17. InitializeComponent();
  18. }
  19.  
  20. private void MainForm_Load(object sender, EventArgs e)
  21. {
  22. // TODO: 這行程式碼會將資料載入 'database1DataSet.Table1' 資料表。您可以視需要進行移動或移除。
  23. this.table1TableAdapter.Fill(this.database1DataSet.Table1);
  24.  
  25. //設定DateTimePicker的高度
  26. this.dateTimePicker1.Height = this.dataGridView1.Height;
  27. }
  28.  
  29. //將DateTimePicker控制項定位在DataGridView的Column上
  30. private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
  31. {
  32. if (this.dataGridView1.Columns[e.ColumnIndex].HeaderText == "date")
  33. {
  34. Rectangle r = this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false);
  35. r = this.dataGridView1.RectangleToScreen(r);
  36. this.dateTimePicker1.Location = this.RectangleToClient(r).Location;
  37. this.dateTimePicker1.Size = r.Size;
  38. this._CheckChange = true;
  39. this.dateTimePicker1.Text = this.dataGridView1.CurrentCell.Value.ToString();
  40. this._CheckChange = false;
  41. this.dateTimePicker1.Visible = true;
  42. }
  43. else
  44. {
  45. this.dateTimePicker1.Visible = false;
  46. }
  47. }
  48.  
  49. //改變Column的值
  50. private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
  51. {
  52. if (_CheckChange) return;
  53. this.dataGridView1.CurrentCell.Value = this.dateTimePicker1.Text;
  54. }
  55. } 
}

沒有留言:

張貼留言