標籤:c# datagridview
由於時間原因,再加之自己懶惰!好久沒寫部落格了,今天寫一篇關於datagridview中如何?時間控制項的文章,算是繼續自己的記錄的習慣!
首先,我們知道datagridview中並不提供控制項,因此,我們無法直接使用!對此我們可以進行如下操作,從而實現在datagridview中插入時間控制項。
一、聲明控制項
我們首先要做的便是聲明一個時間控制項,這個不必詳細多說了,有兩種方式:
1、直接在工具列中進行拖拽
2、在表單的designer.cs檔案中進行聲明。
無論哪種方式,都可以,代碼如下:
private DateTimePicker date;
// // date // this.date.Location = new System.Drawing.Point(230, 41); this.date.Name = "date"; this.date.Size = new System.Drawing.Size(200, 25); this.date.TabIndex = 18; this.date.Visible = false; //這裡是讓控制項先進行隱藏 this.date.ValueChanged += new System.EventHandler(this.date_ValueChanged);//該事件是對時間控制項值改變時的操作,具體實現內容後邊將進行說明。
這樣,我們就將時間控制項聲明好了!
二、進行賦值
//全域變數private DataGridViewTextBoxCell partytime;
private void gridX_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e){ #region 如何顯示入黨時間控制項//date.left:表示控制項在工作區距離左邊的距離(像素)。該工作區指的是表單。//this.gridX.left:gridX是datagridview名字,這裡是獲得datagridview控制項與工作區左邊緣的距離,//this.gridX.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).X:返回選擇儲存格的左邊座標,該座標值是相對與datagridview左邊距離//這樣我們就可以將時間控制項的位置“畫在”工作區中,你可以理解為我們拖著這個時間控制項到了精確的位置。date.Left = this.gridX.Left + this.gridX.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).X;//該代碼同上,只是擷取的是上邊的距離。這樣實際我們就控制住了這個時間控制項的左上方,至於大小我們可以自行設計。 date.Top = this.gridX.Top + this.gridX.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Y; partytime = ((DataGridViewTextBoxCell)gridX.Rows[e.RowIndex].Cells["partyDate"]);//這裡聲明一個DataGridViewTextBoxCell用來擷取datagridview中partydate那列現在的值。 if (e.ColumnIndex == 9)//擷取所在列,注意datagridview中序號是從0開始的。 {//下面代碼是讓控制項顯示時間:1、若沒有時間,則控制項時間顯示目前時間 2、若datagridview中有時間則顯示具體時間。 if (this.gridX.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null || this.gridX.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "") { this.date.Value = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")); this.date.Visible = true; } else { this.date.Value = Convert.ToDateTime(this.gridX.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); this.date.Visible = true; } } else { this.date.Visible = false; } #endregion }
三、控制項日期選擇改變操作
<pre name="code" class="csharp"> private void date_ValueChanged(object sender, EventArgs e) { ////this.dateTimePicker1.Visible = false; partytime.Value = this.date.Value;//時間控制項值改變在將其複製給聲明的那個DataGridViewTextBoxCell,然後進而改變datagridview相應列的值 this.date.Format = DateTimePickerFormat.Custom; this.date.CustomFormat = "yyyy-MM-dd"; //this.gridX.CurrentCell.Value = this.date.Value; this.date.Visible = false; }
至此時間控制項在datagridview中的插入完畢!
c#如何?在datagridview中加入時間控制項