自定义控件之DataGridView列(日期时间选择列)
来源:互联网 发布:php startup 编辑:程序博客网 时间:2024/05/23 23:58
效果图:
代码:
Imports System
Imports System.Windows.Forms
Public Class CalendarColumn
Inherits DataGridViewColumn
Public Sub New()
MyBase.New(New CalendarCell())
End Sub
Public Overrides Property CellTemplate() As DataGridViewCell
Get
Return MyBase.CellTemplate
End Get
Set(ByVal value As DataGridViewCell)
If Not (value Is Nothing) AndAlso Not value.GetType().IsAssignableFrom(GetType(CalendarCell)) Then
Throw New InvalidCastException("Must be a CalendarCell")
End If
MyBase.CellTemplate = value
End Set
End Property
End Class
Public Class CalendarCell
Inherits DataGridViewTextBoxCell
Public Sub New()
Me.Style.Format = "d"
End Sub
Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, ByVal initialFormattedValue As Object, ByVal dataGridViewCellStyle As DataGridViewCellStyle)
MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle)
Dim ctl As CalendarEditingControl = CType(DataGridView.EditingControl, CalendarEditingControl)
ctl.Text = CType(Me.Value, String)
End Sub
Public Overrides ReadOnly Property EditType() As Type
Get
Return GetType(CalendarEditingControl)
End Get
End Property
Public Overrides ReadOnly Property ValueType() As Type
Get
Return GetType(DateTime)
End Get
End Property
Public Overrides ReadOnly Property DefaultNewRowValue() As Object
Get
Return DateTime.Now
End Get
End Property
End Class
Class CalendarEditingControl
Inherits DateTimePicker
Implements IDataGridViewEditingControl
Private dataGridView As DataGridView
Private Shadows ValueChanged As Boolean = False
Private rowIndexNum As Integer
Public Sub New()
Me.Format = DateTimePickerFormat.Short
End Sub
Protected Overrides Sub OnValueChanged(ByVal eventargs As System.EventArgs)
MyBase.OnValueChanged(eventargs)
Call NotifyDataGridViewOfValueChange()
End Sub
Private Sub NotifyDataGridViewOfValueChange()
valueChanged = True
DataGridView.NotifyCurrentCellDirty(True)
End Sub
Public Property EditingControlFormattedValue() As Object Implements IDataGridViewEditingControl.EditingControlFormattedValue
Get
Return Me.Text
End Get
Set(ByVal value As Object)
Me.Text = value.ToString
Call NotifyDataGridViewOfValueChange()
End Set
End Property
Public Function GetEditingControlFormattedValue(ByVal context As DataGridViewDataErrorContexts) As Object Implements IDataGridViewEditingControl.GetEditingControlFormattedValue
Return Me.Text
End Function
Public Sub ApplyCellStyleToEditingControl(ByVal dataGridViewCellStyle As DataGridViewCellStyle) Implements IDataGridViewEditingControl.ApplyCellStyleToEditingControl
Me.Font = dataGridViewCellStyle.Font
Me.CalendarForeColor = dataGridViewCellStyle.ForeColor
Me.CalendarMonthBackground = dataGridViewCellStyle.BackColor
End Sub
Public Property EditingControlRowIndex() As Integer Implements IDataGridViewEditingControl.EditingControlRowIndex
Get
Return rowIndexNum
End Get
Set(ByVal value As Integer)
rowIndexNum = value
End Set
End Property
Public Function EditingControlWantsInputKey(ByVal key As Keys, ByVal dataGridViewWantsInputKey As Boolean) As Boolean Implements IDataGridViewEditingControl.EditingControlWantsInputKey
' Let the DateTimePicker handle the keys listed.
Select Case key And Keys.KeyCode
Case Keys.Left, Keys.Up, Keys.Down, Keys.Right, Keys.Home, Keys.End, Keys.PageDown, Keys.PageUp
Return True
Case Else
Return False
End Select
End Function
Public Sub PrepareEditingControlForEdit(ByVal selectAll As Boolean) Implements IDataGridViewEditingControl.PrepareEditingControlForEdit
' No preparation needs to be done.
End Sub
Public ReadOnly Property RepositionEditingControlOnValueChange() As Boolean Implements IDataGridViewEditingControl.RepositionEditingControlOnValueChange
Get
Return False
End Get
End Property
Public Property EditingControlDataGridView() As DataGridView Implements IDataGridViewEditingControl.EditingControlDataGridView
Get
Return dataGridView
End Get
Set(ByVal value As DataGridView)
dataGridView = value
End Set
End Property
Public Property EditingControlValueChanged() As Boolean Implements IDataGridViewEditingControl.EditingControlValueChanged
Get
Return valueChanged
End Get
Set(ByVal value As Boolean)
valueChanged = value
End Set
End Property
Public ReadOnly Property EditingControlCursor() As Cursor Implements IDataGridViewEditingControl.EditingPanelCursor
Get
Return MyBase.Cursor
End Get
End Property
End Class
- 自定义控件之DataGridView列(日期时间选择列)
- 自定义控件之DataGridView列(日期时间选择列)
- 自定义控件之DataGridView列(下拉列表树)
- 自定义DataGridView日期型列
- DataGridView 自定义日期列 组件
- Csharp DataGridView自定义添加DateTimePicker控件日期列
- Csharp DataGridView自定义添加DateTimePicker控件日期列
- DataGridView内建日期选择列
- 为DataGridView增加日期/时间列
- VS2005 DataGridView 控件 设置自定义列
- datagridview添加时间列
- 自定义DataGridView列
- dotnetbar supergridcontrol控件 日期时间列 显示
- Flex 自定义表格日期时间输入列
- 给datagridview添加一个自定义列类型-日期类型
- 如何设计WinForm中DataGridView控件的自定义按钮列
- 在c#中实现DataGridView中自定义控件列
- DataGridView控件的列选中
- 学习Flex
- Smokescreen 计划: 用 HTML5 实现 Flash
- 星际争霸2细节技巧解析及三大种族计划
- Spring结合Quartz实现多任务定时调用(转)
- Mysql Explain 详解
- 自定义控件之DataGridView列(日期时间选择列)
- 使用MyEclipse快速整合SSH常常遇到的错误
- 多路复用select与poll
- 初学者如何开发出高质量J2EE系统
- 工作流的理解
- X窗口系统名词解释
- 函数的线程安全与可重入
- JNDI与JDBC比较以及连接池的技术
- 从容行天下,任我游带来前所未有的专业导航