有没有什么办法可以把在DataGridView DateTimePicker控件?
我检查了所有可能的属性,但它给复选框,组合框等选项,但不是的DateTimePicker。
有没有什么办法可以把在DataGridView DateTimePicker控件?
我检查了所有可能的属性,但它给复选框,组合框等选项,但不是的DateTimePicker。
你没有错过任何内置的选择,但它可以继承双方DataGridViewColumn
和DataGridViewCell
类主办您选择的任何控制。
本文MSDN上更详细地解释的过程中,甚至包括一些示例代码:
如何:在Windows主机控制窗体DataGridView细胞
您还可以找到代码项目的完整示例: 通用的DataGridView V2.0
private void dgtest_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
dtp = new DateTimePicker();
dgtest.Controls.Add(dtp);
dtp.Format = DateTimePickerFormat.Short;
Rectangle Rectangle = dgtest.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
dtp.Size = new Size(Rectangle.Width, Rectangle.Height);
dtp.Location = new Point(Rectangle.X, Rectangle.Y);
dtp.CloseUp += new EventHandler(dtp_CloseUp);
dtp.TextChanged += new EventHandler(dtp_OnTextChange);
dtp.Visible = true;
}
}
private void dtp_OnTextChange(object sender, EventArgs e)
{
dgtest.CurrentCell.Value = dtp.Text.ToString();
}
void dtp_CloseUp(object sender, EventArgs e)
{
dtp.Visible = false;
}
要在DataGridView中使用的DateTimePicker时解决一些入门的问题,你会想下面的添加到上面提到的微软样品。 花了相当长一段时间搜索出与预期不触发ValueChanged事件的问题。 此修复程序从这里(来到计算器 ),并翻译成低于C#。 这似乎是适当的,因为我不断的DataGridView和的DateTimePicker搜索时发现这个论坛的帖子在这里添加此信息。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData & Keys.KeyCode)
{
case Keys.Enter:
case Keys.Tab:
this.dataGridView.Focus();
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
也许这是不妥当的,但容易招和相同的结果........很多更少的代码......我只是在玩弄,虽然外箱,只需设置
我躲在我的,直到他们单击单元格,或可以显示首先,我声明:
DateTimePicker1.Visible = False
当您单击单元格,运行这段代码...
DateTimePicker1.Visible = True
ActiveControl = DateTimePicker1
然后在下面
Public Sub DateTimePicker1_ValueChanged(sender As System.Object, e As System.EventArgs) Handles DateTimePicker1.ValueChanged
requestDGV.Rows(0).Cells("requestTimeOff").Value = (DateTimePicker1.Value)
DateTimePicker1.Visible = False
DateTimePicker1.Enabled = False
End Sub
超级基本,而且我已经在框中直接坐,不看的地方
或超简易模式.......我只是想遮直到栏内点击
Public Sub DateTimePicker1_ValueChanged(sender As System.Object, e As System.EventArgs) Handles DateTimePicker1.ValueChanged
requestDGV.Rows(0).Cells("requestTimeOff").Value = (DateTimePicker1.Value)
End Sub
你真的只需要一个行.....数据将在网格中,只少了很多代码.....
我想是因为改变的值上的任何变化触发的DateTimePicker近景事件是比较合适的选择了全日的时候,而仅特写触发