我怎样才能显示一个DataGridView一个DateTimePicker?我怎样才能显示一个Dat

2019-05-12 10:49发布

有没有什么办法可以把在DataGridView DateTimePicker控件?

我检查了所有可能的属性,但它给复选框,组合框等选项,但不是的DateTimePicker。

Answer 1:

你没有错过任何内置的选择,但它可以继承双方DataGridViewColumnDataGridViewCell类主办您选择的任何控制。

本文MSDN上更详细地解释的过程中,甚至包括一些示例代码:
如何:在Windows主机控制窗体DataGridView细胞

您还可以找到代码项目的完整示例: 通用的DataGridView V2.0



Answer 2:

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;
    } 


Answer 3:

要在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);

    }


Answer 4:

也许这是不妥当的,但容易招和相同的结果........很多更少的代码......我只是在玩弄,虽然外箱,只需设置

我躲在我的,直到他们单击单元格,或可以显示首先,我声明:

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

你真的只需要一个行.....数据将在网格中,只少了很多代码.....



Answer 5:

我想是因为改变的值上的任何变化触发的DateTimePicker近景事件是比较合适的选择了全日的时候,而仅特写触发



文章来源: How can I display a DateTimePicker in a DataGridView?