首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

datagridview中的Datetimepicker大小

DataGridView中的DateTimePicker大小是指在Windows Forms应用程序中使用DataGridView控件时,自定义DateTimePicker单元格的大小。

DataGridView是一个用于显示和编辑数据的强大控件,它允许用户以表格形式查看和操作数据。而DateTimePicker是一个用于选择日期和时间的控件。

在DataGridView中使用DateTimePicker作为单元格控件,可以方便地编辑日期和时间数据。要调整DateTimePicker的大小,可以通过以下步骤进行操作:

  1. 创建一个自定义的DataGridView列:
代码语言:txt
复制
public class DataGridViewDateTimePickerColumn : DataGridViewColumn
{
    public DataGridViewDateTimePickerColumn()
    {
        this.CellTemplate = new DataGridViewDateTimePickerCell();
    }
}
  1. 创建一个自定义的DataGridView单元格:
代码语言:txt
复制
public class DataGridViewDateTimePickerCell : DataGridViewTextBoxCell
{
    public DataGridViewDateTimePickerCell()
    {
        this.Style.Format = "yyyy-MM-dd HH:mm:ss";
    }

    public override Type EditType
    {
        get
        {
            return typeof(DataGridViewDateTimePickerEditingControl);
        }
    }

    public override Type ValueType
    {
        get
        {
            return typeof(DateTime);
        }
    }

    public override object DefaultNewRowValue
    {
        get
        {
            return DateTime.Now;
        }
    }
}
  1. 创建一个自定义的编辑控件:
代码语言:txt
复制
public class DataGridViewDateTimePickerEditingControl : DateTimePicker, IDataGridViewEditingControl
{
    private DataGridView dataGridView;
    private bool valueChanged = false;
    private int rowIndex;

    public DataGridViewDateTimePickerEditingControl()
    {
        this.Format = DateTimePickerFormat.Custom;
        this.CustomFormat = "yyyy-MM-dd HH:mm:ss";
    }

    public object EditingControlFormattedValue
    {
        get
        {
            return this.Value.ToString("yyyy-MM-dd HH:mm:ss");
        }
        set
        {
            if (value is string)
            {
                DateTime parsedDate;
                if (DateTime.TryParse((string)value, out parsedDate))
                {
                    this.Value = parsedDate;
                }
            }
        }
    }

    public object GetEditingControlFormattedValue(DataGridViewDataErrorContexts context)
    {
        return EditingControlFormattedValue;
    }

    public void ApplyCellStyleToEditingControl(DataGridViewCellStyle dataGridViewCellStyle)
    {
        this.Font = dataGridViewCellStyle.Font;
        this.CalendarForeColor = dataGridViewCellStyle.ForeColor;
        this.CalendarMonthBackground = dataGridViewCellStyle.BackColor;
    }

    public int EditingControlRowIndex
    {
        get
        {
            return rowIndex;
        }
        set
        {
            rowIndex = value;
        }
    }

    public bool EditingControlWantsInputKey(Keys keyData, bool dataGridViewWantsInputKey)
    {
        switch (keyData & Keys.KeyCode)
        {
            case Keys.Left:
            case Keys.Up:
            case Keys.Down:
            case Keys.Right:
            case Keys.Home:
            case Keys.End:
            case Keys.PageDown:
            case Keys.PageUp:
                return true;
            default:
                return !dataGridViewWantsInputKey;
        }
    }

    public void PrepareEditingControlForEdit(bool selectAll)
    {
        // No preparation needs to be done.
    }

    public bool RepositionEditingControlOnValueChange
    {
        get
        {
            return false;
        }
    }

    public DataGridView EditingControlDataGridView
    {
        get
        {
            return dataGridView;
        }
        set
        {
            dataGridView = value;
        }
    }

    public bool EditingControlValueChanged
    {
        get
        {
            return valueChanged;
        }
        set
        {
            valueChanged = value;
        }
    }

    public Cursor EditingPanelCursor
    {
        get
        {
            return base.Cursor;
        }
    }

    protected override void OnValueChanged(EventArgs eventargs)
    {
        valueChanged = true;
        this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
        base.OnValueChanged(eventargs);
    }
}
  1. 在使用DataGridView时,将自定义的列添加到控件中:
代码语言:txt
复制
DataGridViewDateTimePickerColumn column = new DataGridViewDateTimePickerColumn();
dataGridView.Columns.Add(column);

通过以上步骤,就可以在DataGridView中使用自定义大小的DateTimePicker单元格了。根据实际需求,可以调整DateTimePicker的大小、格式等属性,以满足不同的界面设计和用户体验要求。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库:提供高性能、可扩展的云数据库服务,适用于各种应用场景。
  • 腾讯云服务器:提供弹性计算能力,支持按需购买和预付费模式,适用于各种规模的应用。
  • 腾讯云对象存储:提供安全可靠的云存储服务,适用于存储和管理各种类型的数据。
  • 腾讯云人工智能:提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等,适用于各种智能应用。
  • 腾讯云物联网:提供全面的物联网解决方案,包括设备接入、数据管理、应用开发等,适用于构建智能物联网系统。
  • 腾讯云移动开发:提供全面的移动开发服务,包括移动应用开发、移动推送、移动分析等,适用于构建移动应用和服务。
  • 腾讯云区块链:提供安全可信的区块链服务,适用于构建各种区块链应用和解决方案。
  • 腾讯云元宇宙:提供虚拟现实和增强现实技术支持,适用于构建沉浸式的虚拟现实体验和增强现实应用。

以上是关于DataGridView中的DateTimePicker大小的完善且全面的答案,希望能对您有所帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DataGridView 合并单元格

Windows Forms DataGridView 没有提供合并单元格功能,要实现合并单元格功能就要在CellPainting事件中使用Graphics.DrawLine和 Graphics.DrawString...下面的代码可以对DataGridView第1列内容相同单元格进行合并:         private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs...)                         //   如果下一行和当前行数据不同,则在当前单元格画一条底边线                         if (e.RowIndex <... dataGridView1.Rows.Count - 1 &&                         dataGridView1.Rows[e.RowIndex + 1].Cells[e.ColumnIndex...e.CellBounds.Right - 1,                             e.CellBounds.Bottom);                         // 画(填写)单元格内容,相同内容单元格只填写第一个

5K20
  • BindingNavigator操作DatagridView数据

    ,显示数据,我添加了三列,对应要显示三列数据   再拉一个BindingSource,作为上面两个媒人 数据库数据如下: 代码如下: namespace gjjyOffline { public.../绑定每列值显示在DatagridView this.dataGridView1.Columns["column1"].DataPropertyName = dtbl.Columns["id"].ToString...();//column1是DatagridView第一列name值 this.dataGridView1.Columns["column2"].DataPropertyName = dtbl.Columns...["status"].ToString();             //将DatagridView数据通过BindingSource与BindingNavigator连接起来...数据与BindingNavigator导航栏联系起来了 分页实现: 重新编辑BindingNavigator 在上面代码基础上, using System; using System.Collections.Generic

    98520

    【转】基于C#WinFormDataGridView控件操作汇总

    基于C#WinFormDataGridView控件操作汇总 一、单元格内容操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1...单元格边框、 网格线样式设定 1) DataGridView 边框线样式设定 DataGridView 边框线样式是通过 DataGridView.BorderStyle 属性来设定。...; *******DataGridView用户删除操作自定义: 1) 无条件限制行删除操作。 默认时,DataGridView 是允许用户进行行删除操作。...在该事件处理除了可以设定默认值以外,还可以指定某些特定单元格ReadOnly属性等。...{ e.ContextMenuStrip = this.ContextMenuStrip1; } } CellContextMenuStripNeeded  事件处理方法参数

    5.3K50

    DataGridView控件实现冻结列分界线

    如下图: (图1) WinForm下DataGridView控件也能实现类似的冻结行或者列功能(参见:http://msdn.microsoft.com/zh-cn/library/28e9w2e1...(VS.85).aspx) ,但是呢,DataGridView控件默认不会在冻结列或者行分界处绘制一个明显分界线,这样的话,最终用户很难注意到当前有列或者行是冻结。...2.如何保证分界线不会绘制到ScrollBar上 研究了一下,我们可以借用DataGridView提供CellPainting方法。...在DataGridView绘制每一个Cell时候判断当前Cell是否是分界线所在位置,然后进行绘制。...最终做出效果如下图: (图3) 以下是DataGridView控件扩展源代码: public class DataGridViewEx : DataGridView {

    2.3K100

    网络编程大小

    在计算机领域,大小端(Endianness)是指字节序排列顺序。简单来说,就是存储器多字节数据字节序列,从高到低或从低到高顺序不同。那么,何谓大小端呢?...什么是大小端 以4字节整型为例,它二进制表示方式是32位。...在x86架构CPU,通常采用小端序,而在MIPS架构CPU,通常采用大端序。在网络传输,由于不同机器之间采用存储方式可能不同,为了保证数据正确传输,需要对数据进行大小端转换。...BSD socket大小端转换支持 在网络编程大小端问题是非常重要。因为不同CPU架构可能有不同字节序,而网络通信是跨平台,因此需要进行字节序转换。...这样就完成了对端口号大小端转换。

    76640

    Bootstrapdatetimepicker日期控件1899年问题解决

    Bootstrapdatetimepicker日期控件1899年问题解决   最近在开发项目的过程,遇到一个很尴尬问题。...我们项目一直采用是angular+bootstrap,日期控件用是bootstrapdatetimepicker,这个日期控件存在一个bug,当用户输入日期时,日期控件会自动跳到1899年,这个用户体验特别不好...2、支持多种格式     其实datetimepicker默认支持yyyy-MM-dd、yyyy/MM/dd、yyyy.MM.dd三种日期格式,另外一种yyyyMMdd需要我们自己在代码实现。     ...默认值: true   当选择器关闭时候,是否强制解析输入框值。...也就是说,当用户在输入框输入了不正确日期,选择器将会尽量解析输入值,并将解析后正确值按照给定格式format设置到输入框

    2.4K40

    【C#】让DataGridView输入实时更新数据源计算列

    本文适用Winform开发,且DataGridView数据源为DataTable/DataView情况。...DataGridView(下称dgv),A、B两列都要在dgv显示,其中A列可编辑(ReadOnly=false)。...当dgv绑定数据源后,它每一行就对应了数据源一行(或叫一项),这就是我所谓【源行】。...粗略一看,是EM_SETSEL,经过了解,就是EM_SETSEL,所以接下来要做就是自定义一个文本编辑控件,让它忽略这个消息,完了让这个控件成为dgv单元格文本编辑控件。...CellTemplate最好尽早设置,比如在窗体构造函数,紧跟InitializeComponent()方法设置; InitializeComponent(); var cell = new DataGridViewTextBoxUnSelectableCell

    5.2K20

    MultiRow发现之旅(四)- 使用MultiRow开发WinForm应用(附源码)

    上面创建数据库有19个字段,如果使用DataGridView展示,应用程序将需要更宽距离才能完全展示一条记录。这样导致可读性大打折扣。...编辑模板 在创建模板时候,我们需要根据数据库当中不同字段类型选择不同Cell类型来展示数据。 本例,我只使用了9种Cell类型,根据自己喜好摆出来下面的布局形式: ?...来展示,通过设置他Mask属性来控制显示格式; · 日期类型可以使用DateTimePicker类型; · 图片类型可以使用ImageCell,等等。...如果觉得模板样式过于单调,可以需要调节Template当中相关Style属性来设置外观,可以参考MulitRow帮助文档“如何设置Style和皮肤”章节。...值得一提是,上面应用程序仅仅显示了GcMultiRow控件当中一个Row,也就是数据表当中一条记录,我将Form大小调节刚好跟一个Row大小相当,因此每次可以浏览一个Row,通过点击导航条上面的按钮

    1.3K100

    C#控件命名规范

    C#控件命名规范 控件分类 控件名称 命名规范 说明 数据显示控件 DataGridView dgv 数据绑定和定位控件 BindingSource...DateTimePicker dtp MonthCalendar mon 对话框控件 ColorDialog color...,有很多地方不易记忆与理解,后续在具体使用过程中会做一定改动。...2、 C#控件命名方式为:命名规范+控件含义组成,控件命名以命名规范开始,控件含义首字母大写,若控件是一系列,在控件含义后面加上数字作为控件顺序控制。...3、 制定规范目的是为了让团队开发更容易。 4、 个人可根据个人使用习惯制定符合自己规范,但为了代码通俗易懂原则,本人还是建议按照本规范进行控件命名!

    2.9K30
    领券