/// <summary>
/// DataGridView自定义添加DateTimePicker控件日期列 参考http://msdn.microsoft.com/en-us/library/7tas5c80.aspx
/// 涂聚文 缔友计算机信息技术有限公司
/// 2011-11-16 捷为工作室
/// </summary>
public class GeovinDuCalendarColumn : DataGridViewColumn
/// <summary>
/// </summary>
public GeovinDuCalendarColumn()
: base(new CalendarCell())
/// <summary>
/// </summary>
public override DataGridViewCell CellTemplate
return base.CellTemplate;
if (value != null &&
!value.GetType().IsAssignableFrom(typeof(CalendarCell)))
throw new InvalidCastException("Must be a CalendarCell");
base.CellTemplate = value;
/// <summary>
/// DataGridView 添加日期列
/// 涂聚文 缔友计算机信息技术有限公司
/// 2011-11-16 捷为工作室
/// </summary>
public class CalendarCell : DataGridViewTextBoxCell
public CalendarCell()
: base()
this.Style.Format = "d";
public override void InitializeEditingControl(int rowIndex, object
initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
base.InitializeEditingControl(rowIndex, initialFormattedValue,
dataGridViewCellStyle);
CalendarEditingControl ctl =
DataGridView.EditingControl as CalendarEditingControl;
if (this.Value == null)
ctl.Value = (DateTime)this.DefaultNewRowValue;
ctl.Value = (DateTime)this.Value;
public override Type EditType
return typeof(CalendarEditingControl);
public override Type ValueType
return typeof(DateTime);
public override object DefaultNewRowValue
return DateTime.Now;
/// <summary>
///DataGridView 添加日期列
/// 涂聚文 缔友计算机信息技术有限公司
/// 2011-11-16 捷为工作室
/// </summary>
class CalendarEditingControl : DateTimePicker, IDataGridViewEditingControl
DataGridView dataGridView;
private bool valueChanged = false;
int rowIndex;
public CalendarEditingControl()
this.Format = DateTimePickerFormat.Short;
public object EditingControlFormattedValue
return this.Value.ToShortDateString();
if (value is String)
this.Value = DateTime.Parse((String)value);
catch
this.Value = DateTime.Now;
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
return rowIndex;
rowIndex = value;
public bool EditingControlWantsInputKey(
Keys key, bool dataGridViewWantsInputKey)
// Let the DateTimePicker handle the keys listed.
switch (key & 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
return false;
public DataGridView EditingControlDataGridView
return dataGridView;
dataGridView = value;
public bool EditingControlValueChanged
return valueChanged;
valueChanged = value;
public Cursor EditingPanelCursor
return base.Cursor;
protected override void OnValueChanged(EventArgs eventargs)
valueChanged = true;
this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
base.OnValueChanged(eventargs);
//dataGridView1.Columns[3].HeaderText = "入職日期";
GeovinDuCalendarColumn col = new GeovinDuCalendarColumn();
this.dataGridView1.Columns.Insert(3,col);
col.HeaderText = "入職日期";
/// <summary>
/// 设置默认值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
if (dataGridView1.Rows.Count >= 1) //设定默认日期
this.dataGridView1.Rows[e.RowIndex].Cells[2].Value = "20E8C162-C09C-4F7A-9C97-0CA50E201F6B";
this.dataGridView1.Rows[e.RowIndex].Cells[3].Value = DateTime.Now;
this.dataGridView1.Rows[e.RowIndex].Cells[4].Value = "C50E08D5-7529-4F86-966E-9497AD67EA0C";
python 封装android python 封装动态库 import
Python 支持__import__() 方法来动态的导入module。其方法描述是:__import__( name, globals, locals, fromlist)静态的方式导入dispatcherimport dispatcher 对应__import__()方法应该是:name = 'dispatcher'
ds = __import__('dispatcher')当包含packa
javascript 模态框 流行的插件 js打开模态框
例子1:(MyModl :模态框的ID)打开: let m = document.getElementById("MyModl");
$(m).modal("show"); 或者: $($("#MyModl")).modal("show");关闭:let m = document.getElementById("MyModl");
$(m).modal("hide"
python 模拟鼠标移动 python移动鼠标位置
运行环境 : python 3.6.01. 安装第三方库 pyautogui1) 官方库pip install pyautogui2) 或者从清华镜像或者从其他镜像安装pip -i https://pypi.tuna.tsinghua.edu.cn/simple install pyautogui 2. 编写执行程序# -*- encoding: utf-8 -*-
AES ECB python 填充 python中填充的程序
今天又给自己出了道题,需求是实现《光·遇》游戏中的格子琴谱的打印,这种琴谱是一个5*3的长方格子谱(音域是从中音do开始的十五个钢琴白键),那么需求就变成了:1.打印一个5*3的长方形格子2.实现向指定格子中填充内容3.在每一层循环中给需要填充内容的行列数传参下面是实现了这几个功能的代码:# 定义乐谱边长
x = 26
y = 13
# 琴谱的页数
# num = 1
# 初始化
a = 0