Fur*_*gal 21 .net vb.net datagridview datetimepicker winforms
有没有办法将DateTimePicker控件放在DataGridView中?
我检查了所有可能的属性,但它提供了复选框,组合框等选项,但不是DateTimePicker.
Cod*_*ray 28
您没有错过任何内置选项,但可以将类DataGridViewColumn和DataGridViewCell类子类化为托管您选择的任何控件.
MSDN上的这篇文章更详细地解释了这个过程,甚至包括一些示例代码:
如何:Windows窗体DataGridView单元中的主机控件
您还可以在Code Project:Generic DataGridView V2.0上找到完整的示例
小智 6
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
// determine if click was on our date column
if (dataGridView1.Columns[e.ColumnIndex].DataPropertyName == nameof(User.BirthDate))
{
// initialize DateTimePicker
dtp = new DateTimePicker();
dtp.Format = DateTimePickerFormat.Short;
dtp.Visible = true;
dtp.Value = DateTime.Parse(dataGridView1.CurrentCell.Value.ToString());
// set size and location
var rect = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
dtp.Size = new Size(rect.Width, rect.Height);
dtp.Location = new Point(rect.X, rect.Y);
// attach events
dtp.CloseUp += new EventHandler(dtp_CloseUp);
dtp.TextChanged += new EventHandler(dtp_OnTextChange);
dataGridView1.Controls.Add(dtp);
}
}
// on text change of dtp, assign back to cell
private void dtp_OnTextChange(object sender, EventArgs e)
{
dataGridView1.CurrentCell.Value = dtp.Text.ToString();
}
// on close of cell, hide dtp
void dtp_CloseUp(object sender, EventArgs e)
{
dtp.Visible = false;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
也许这不合适,但简单的技巧和相同的结果......更少的代码......我只是在玩,虽然在盒子外面,只是设置
我隐藏我的,直到他们点击单元格,或者你可以显示我首先声明:
DateTimePicker1.Visible = False
Run Code Online (Sandbox Code Playgroud)
当您单击单元格时,运行此代码...
DateTimePicker1.Visible = True
ActiveControl = DateTimePicker1
Run Code Online (Sandbox Code Playgroud)
那么下面
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
Run Code Online (Sandbox Code Playgroud)
Super Basic ,我把它直接放在盒子里,看起来并不格格不入
或者超级简单的模式.......我只是喜欢隐藏我的直到点击列
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
Run Code Online (Sandbox Code Playgroud)
你真的只需要一行......数据将在网格中,只是少了很多代码......
| 归档时间: |
|
| 查看次数: |
61176 次 |
| 最近记录: |