zoukankan
html css js c++ java
Winform下的Datagrid的列风格(3)—DataGridTimePickerColumn(转)
class
DataGridTimePickerColumn : DataGridColumnStyle
{
private
DateTimePicker myDateTimePicker
=
new
DateTimePicker();
//
The isEditing field tracks whether or not the user is
//
editing data with the hosted control.
private
bool
isEditing;
public
DataGridTimePickerColumn() :
base
()
{
myDateTimePicker.Visible
=
false
;
}
protected
override
void
Abort(
int
rowNum)
{
isEditing
=
false
;
myDateTimePicker.ValueChanged
-=
new
EventHandler(TimePickerValueChanged);
Invalidate();
}
protected
override
bool
Commit
(CurrencyManager dataSource,
int
rowNum)
{
myDateTimePicker.Bounds
=
Rectangle.Empty;
myDateTimePicker.ValueChanged
-=
new
EventHandler(TimePickerValueChanged);
if
(
!
isEditing)
return
true
;
isEditing
=
false
;
try
{
DateTime value
=
myDateTimePicker.Value;
SetColumnValueAtRow(dataSource, rowNum, value);
}
catch
(Exception)
{
Abort(rowNum);
return
false
;
}
Invalidate();
return
true
;
}
protected
override
void
Edit(
CurrencyManager source,
int
rowNum,
Rectangle bounds,
bool
readOnly,
string
instantText,
bool
cellIsVisible)
{
DateTime value
=
(DateTime)
GetColumnValueAtRow(source, rowNum);
if
(cellIsVisible)
{
myDateTimePicker.Bounds
=
new
Rectangle
(bounds.X
+
2
, bounds.Y
+
2
,
bounds.Width
-
4
, bounds.Height
-
4
);
myDateTimePicker.Value
=
value;
myDateTimePicker.Visible
=
true
;
myDateTimePicker.ValueChanged
+=
new
EventHandler(TimePickerValueChanged);
}
else
{
myDateTimePicker.Value
=
value;
myDateTimePicker.Visible
=
false
;
}
if
(myDateTimePicker.Visible)
DataGridTableStyle.DataGrid.Invalidate(bounds);
}
protected
override
Size GetPreferredSize(
Graphics g,
object
value)
{
return
new
Size(
100
, myDateTimePicker.PreferredHeight
+
4
);
}
protected
override
int
GetMinimumHeight()
{
return
myDateTimePicker.PreferredHeight
+
4
;
}
protected
override
int
GetPreferredHeight(Graphics g,
object
value)
{
return
myDateTimePicker.PreferredHeight
+
4
;
}
protected
override
void
Paint(Graphics g,
Rectangle bounds,
CurrencyManager source,
int
rowNum)
{
Paint(g, bounds, source, rowNum,
false
);
}
protected
override
void
Paint(
Graphics g,
Rectangle bounds,
CurrencyManager source,
int
rowNum,
bool
alignToRight)
{
Paint(
g,bounds,
source,
rowNum,
Brushes.Red,
Brushes.Blue,
alignToRight);
}
protected
override
void
Paint(
Graphics g,
Rectangle bounds,
CurrencyManager source,
int
rowNum,
Brush backBrush,
Brush foreBrush,
bool
alignToRight)
{
DateTime date
=
(DateTime)
GetColumnValueAtRow(source, rowNum);
Rectangle rect
=
bounds;
g.FillRectangle(backBrush,rect);
rect.Offset(
0
,
2
);
rect.Height
-=
2
;
g.DrawString(date.ToString(
"
d
"
),
this
.DataGridTableStyle.DataGrid.Font,
foreBrush, rect);
}
protected
override
void
SetDataGridInColumn(DataGrid value)
{
base
.SetDataGridInColumn(value);
if
(myDateTimePicker.Parent
!=
null
)
{
myDateTimePicker.Parent.Controls.Remove
(myDateTimePicker);
}
if
(value
!=
null
)
{
value.Controls.Add(myDateTimePicker);
}
}
private
void
TimePickerValueChanged(
object
sender, EventArgs e)
{
this
.isEditing
=
true
;
base
.ColumnStartedEditing(myDateTimePicker);
}
}
查看全文
相关阅读:
Berlekamp-Massey算法学习笔记
HDU 1848 Fibonacci again and again(SG函数)
jQuery EasyUI API 中文文档
视频质量评价方法:VQM
hdu 4021 24 Puzzle ( 逆序数判断是否可解 )
大菜鸟学linux-0.11(开始篇)
Oracle 临时表空间 temp表空间切换
Android 如何增大开机铃声 M
使用Jquery+EasyUI 进行框架项目开发案例讲解之三---角色管理源码分享
Android 如何添加一个新的时区
原文地址:https://www.cnblogs.com/yitian/p/1289999.html
最新文章
Jetty入门(1-1)Jetty入门教程
版本名称GA的含义:SNAPSHOT->alpha->beta->release->GA
OAuth2.0学习(1-13)oauth2.0 的概念:资源、权限(角色)和scope
Spring Security入门(1-13)Spring Security的投票机制和投票器
Spring Security入门(1-12)Spring Security 的过滤器机制
Spring入门(3-1)Spring的标签命名空间
OAuth2.0学习(1-12)开源的OAuth2.0项目和比较
SiteMesh入门(1-1)SiteMesh是什么?
SpringMvc(4-1)Spring MVC 中的 forward 和 redirect
OAuth2.0学习(1-11)新浪开放平台微博认证-使用OAuth2.0调用微博的开放API
热门文章
OAuth2.0学习(1-10)新浪开放平台微博认证-手机应用授权和refresh_token刷新access_token
OAuth2.0学习(1-9)新浪开放平台微博认证-web应用授权(授权码方式)
cf348D. Turtles(LGV定理 dp)
BZOJ1856: [Scoi2010]字符串(组合数)
BZOJ1396: 识别子串(后缀自动机 线段树)
BZOJ3238: [Ahoi2013]差异(后缀自动机)
BZOJ4566: [Haoi2016]找相同字符(后缀自动机)
LOJ#6491. zrq 学反演(莫比乌斯反演 杜教筛)
CDQ分治小结
loj#6235. 区间素数个数(min25筛)
Copyright © 2011-2022 走看看