当前位置:首页 > 计算机相关 > .net专区 > 正文内容

为DataGridView的一个列加入DateTimePicker控件

piikee13年前 (2010-08-05).net专区286
由于DataGridView自带的ColumnType里面没有DateTimePicker这个控件。所以要实现一个输入日期的列就比较麻烦了。通过以下方法可以往DataGridView加入DateTimePicker控件。
首先,前端设计加入一个DataGridView控件,命名为DataGridView1。
然后,后台.cs文件写入以下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace moonlight_treasure
{
public partial class MyCount : Form
{
DateTimePicker  dtp = new DateTimePicker();  //这里实例化一个DateTimePicker控件
Rectangle _Rectangle;
public MyCount()
{
InitializeComponent();
dataGridView1.Controls.Add(dtp);  //把时间控件加入DataGridView
dtp.Visible = false;  //先不让它显示
dtp.Format = DateTimePickerFormat.Custom;  //设置日期格式为2010-08-05
dtp.TextChanged += new EventHandler(dtp_TextChange); //为时间控件加入事件dtp_TextChange
}
/*************时间控件选择时间时****************/
private void dtp_TextChange(object sender, EventArgs e)
{
dataGridView1.CurrentCell.Value = dtp.Text.ToString();  //时间控件选择时间时,就把时间赋给所在的单元格
}
/****************单元格被单击,判断是否是放时间控件的那一列*******************/
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
_Rectangle = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); //得到所在单元格位置和大小
dtp.Size = new Size(_Rectangle.Width, _Rectangle.Height); //把单元格大小赋给时间控件
dtp.Location = new Point(_Rectangle.X, _Rectangle.Y); //把单元格位置赋给时间控件
dtp.Visible = true;  //可以显示控件了
}
else
dtp.Visible = false;
}
/***********当列的宽度变化时,时间控件先隐藏起来,不然单元格变大时间控件无法跟着变大哦***********/
private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
dtp.Visible = false;
}
/***********滚动条滚动时,单元格位置发生变化,也得隐藏时间控件,不然时间控件位置不动就乱了********/
private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
dtp.Visible = false;
}
}
}

扫描二维码推送至手机访问。

版权声明:本文由萍客小居发布,如需转载请注明出处。

本文链接:https://www.piikee.net/678.html

分享给朋友:

相关文章

SQL 2005中设置两个主键的方法

SQL2005中,可视化见表,选中一行设置主键,然后再选一行设置主键,则刚才设置的主键就自动取消了。怎么设置两个主键呢。其实Windows中很多东西都是融会贯通的,想一想多选的Ctrl键不就解决了~ 按住Ctrl,用鼠标选两个行,然后右键,...

C#泛型的好处

关于object类型:1.object类型可以来引用任何类型的实例;2.object类型可以存储任何类型的值;3.可以定义object类型的参数;4.可以把object作为返回类型。但是--这样做有很大的问题1.会因为程序员没有记住使用的类...

AjaxControlToolkit中各个控件功能说明

1.Accordion控件1.1【功能概述】Accordion可以让你设计多个panel 并且一次只显示一个Panel .在页面上的显示效果就像是使用了多个CollapsiblePanels只不过每一次只展开其中一个CollapsibleP...

C#的窗体(WinForm)退出杂谈

1、Winform点击退出按钮,需要确认再退出:private void MainForm_FormClosing(object sender, FormClosingEventArgs e){if (MessageBox.Show("是否...

asp.net实现动态显示当前时间

asp.net实现动态显示时间的两个方法方法一:不用javascrip,而是用了AJAX。(开销比较大,每秒向服务器请求一次时间)Default.aspx页面:先拉一个ScriptManager控件到页面,然后拉一个UpdatePanel控...

.net中使用webpart,数据库报错,error:26的解决办法

出错页面如下:“/”应用程序中的服务器错误。--------------------------------------------------------------------------------在与 SQL Server 建立连接...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。