我想在datagridview列中设置日期 [英] I want set date in datagridview column
本文介绍了我想在datagridview列中设置日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在vb.net的datagridview列中设置日期
在这个datagridview中我使用的是组合框列,我也希望将日期设置为另一列。 br />
提前感谢。
解决方案
参考:数据网格视图列 [ ^ ]
以下是对您的问题的引用,
datagridview中的日期值 [ ^ ]
Public Class CalendarUseColumn
Inherits System.Windows.Forms.DataGridViewColumn
Public Sub New()
MyBase.New(New CalendarUseCel l())
End Sub
Public Overrides Property CellTemplate()As DataGridViewCell
Get
返回MyBase.CellTemplate
结束获取
设置(ByVal值As DataGridViewCell)
'确保用于模板的单元格是CalendarCell。
If(值IsNot Nothing)AndAlso _
Not value.GetType()。IsAssignableFrom(GetType(CalendarUseCell))_
然后
抛出新的InvalidCastException(必须是CalendarCell )
结束如果
MyBase.CellTemplate = value
结束集
结束物业
结束等级
公共类CalendarUseCell
继承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 CalendarUseEditingControl = _
CType(DataGridView.EditingControl,CalendarUseEditingControl)
If Not Object.Equals(Me.Value,Nothing)AndAlso(Me.Value IsNot DBNull.Value)然后
ctl.Value = CType(Me.Value,DateTime)
结束如果
End Sub
公共覆盖ReadOnly属性EditType()类型
获取
'返回CalendarCell使用的编辑控件的类型。
返回GetType(CalendarUseEditingControl)
结束获取
结束属性
公共覆盖ReadOnly属性ValueType()类型
获取
'返回CalendarCell包含的值的类型。
返回GetType(DateTime)
结束获取
结束属性
公共覆盖ReadOnly属性DefaultNewRowValue()As Object
Get
'使用当前日期和时间作为默认值。
返回DateTime.Now
结束获取
结束属性
结束类
公共类CalendarUseEditingControl
继承DateTimePicker
实现IDataGridViewEditingControl
私有dataGridViewControl As DataGridView
私有valueIsChanged As Boolean = False
私有rowIndexNum As Integer
Public Sub New()
Me.Format = DateTimePickerFormat.Short
End Sub
公共属性EditingControlFormattedValue()As Object _
实现IDataGridViewEditingControl.EditingControlFormattedValue
获取
返回Me.Value.ToShortDateString()
结束获取
设置(ByVal值为对象)
如果TypeOf值为String则
Me.Value = DateTime.Parse (CStr(value))
End if
End Set
End Property
公共函数GetEdit ingControlFormattedValue(ByVal context _
As DataGridViewDataErrorContexts)As Object _
Implements IDataGridViewEditingControl.GetEditingControlFormattedValue
返回Me.Value.ToShortDateString()
结束函数
Public Sub ApplyCellStyleToEditingControl(ByVal dataGridViewCellStyle As _
DataGridViewCellStyle)_
Implements IDataGridViewEditingControl.ApplyCellStyleToEditingControl
Me.Font = dataGridViewCellStyle.Font
Me .CalendarForeColor = dataGridViewCellStyle.ForeColor
Me.CalendarMonthBackground = dataGridViewCellStyle.BackColor
End Sub
公共属性EditingControlRowIndex()As Integer _
实现IDataGridViewEditingControl。 EditingControlRowIndex
获取
返回rowIndexNum
结束获取
设置(ByVal值为整数)
rowIndexNum = valu e
结束集
结束属性
公共函数EditingControlWantsInputKey(ByVal key As Keys,_
ByVal dataGridViewWantsInputKey As Boolean)As Boolean _
实现IDataGridViewEditingControl.EditingControlWantsInputKey
'让DateTimePicker处理列出的键。
选择Case键和Keys.KeyCode
Case Keys.Left,Keys.Up,Keys.Down,Keys.Right,_
Keys.Home,Keys.End,Keys.PageDown,Keys .PageUp
返回True
Case Else
返回非dataGridViewWantsInputKey
结束选择
结束函数
Public Sub PrepareEditingControlForEdit(ByVal selectAll As Boolean)_
实现IDataGridViewEditingControl.PrepareEditingControlForEdit
'不需要做任何准备工作。
结束子
公共ReadOnly属性RepositionEditingControlOnValueChange()_
As Boolean实现_
IDataGridViewEditingControl.RepositionEditingControlOnValueChange
获取
返回False
结束获取
结束属性
公共属性EditingControlDataGridView()As DataGridView _
实现IDataGridViewEditingControl.EditingControlDataGridView
获取
返回dataGridViewControl
结束获取
设置(ByVal值为DataGridView)
dataGridViewControl = value
结束集
结束物业
公共属性EditingControlValueChanged()As Boolean _
实现IDataGridViewEditingControl.EditingControlValueChanged
获取
返回valueIsChanged
结束获取
设置(ByVal值为布尔值)
valueIsChanged = value
End Set
End Property
Public ReadOnly Property EditingControlCursor()As Cursor _
Implements IDataGridViewEditingControl.EditingPanelCursor
获取
返回MyBase.Cursor
结束获取
结束属性
受保护的覆盖Sub OnValueChanged(ByVal eventargs As EventArgs)
'通知DataGridView单元格的内容已更改。
valueIsChanged = True
Me.EditingControlDataGridView.NotifyCurrentCellDirty(True)
MyBase.OnValueChanged(eventargs)
End Sub
End Class
how to set date in datagridview column in vb.net
In this datagridview i am using the combobox column and also i want set date to another column.
thanks in advance.
解决方案
Refer: Datagrid view columns[^]
Here is the reference to your question,
Date value in datagridview[^]
Public Class CalendarUseColumn Inherits System.Windows.Forms.DataGridViewColumn Public Sub New() MyBase.New(New CalendarUseCell()) End Sub Public Overrides Property CellTemplate() As DataGridViewCell Get Return MyBase.CellTemplate End Get Set(ByVal value As DataGridViewCell) ' Ensure that the cell used for the template is a CalendarCell. If (value IsNot Nothing) AndAlso _ Not value.GetType().IsAssignableFrom(GetType(CalendarUseCell)) _ Then Throw New InvalidCastException("Must be a CalendarCell") End If MyBase.CellTemplate = value End Set End Property End Class Public Class CalendarUseCell Inherits DataGridViewTextBoxCell Public Sub New() ' Use the short date format. Me.Style.Format = "d" End Sub Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, _ ByVal initialFormattedValue As Object, _ ByVal dataGridViewCellStyle As DataGridViewCellStyle) ' Set the value of the editing control to the current cell value. MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, _ dataGridViewCellStyle) Dim ctl As CalendarUseEditingControl = _ CType(DataGridView.EditingControl, CalendarUseEditingControl) If Not Object.Equals(Me.Value, Nothing) AndAlso (Me.Value IsNot DBNull.Value) Then ctl.Value = CType(Me.Value, DateTime) End If End Sub Public Overrides ReadOnly Property EditType() As Type Get ' Return the type of the editing contol that CalendarCell uses. Return GetType(CalendarUseEditingControl) End Get End Property Public Overrides ReadOnly Property ValueType() As Type Get ' Return the type of the value that CalendarCell contains. Return GetType(DateTime) End Get End Property Public Overrides ReadOnly Property DefaultNewRowValue() As Object Get ' Use the current date and time as the default value. Return DateTime.Now End Get End Property End Class Public Class CalendarUseEditingControl Inherits DateTimePicker Implements IDataGridViewEditingControl Private dataGridViewControl As DataGridView Private valueIsChanged As Boolean = False Private rowIndexNum As Integer Public Sub New() Me.Format = DateTimePickerFormat.Short End Sub Public Property EditingControlFormattedValue() As Object _ Implements IDataGridViewEditingControl.EditingControlFormattedValue Get Return Me.Value.ToShortDateString() End Get Set(ByVal value As Object) If TypeOf value Is String Then Me.Value = DateTime.Parse(CStr(value)) End If End Set End Property Public Function GetEditingControlFormattedValue(ByVal context _ As DataGridViewDataErrorContexts) As Object _ Implements IDataGridViewEditingControl.GetEditingControlFormattedValue Return Me.Value.ToShortDateString() 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 Not dataGridViewWantsInputKey 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 dataGridViewControl End Get Set(ByVal value As DataGridView) dataGridViewControl = value End Set End Property Public Property EditingControlValueChanged() As Boolean _ Implements IDataGridViewEditingControl.EditingControlValueChanged Get Return valueIsChanged End Get Set(ByVal value As Boolean) valueIsChanged = value End Set End Property Public ReadOnly Property EditingControlCursor() As Cursor _ Implements IDataGridViewEditingControl.EditingPanelCursor Get Return MyBase.Cursor End Get End Property Protected Overrides Sub OnValueChanged(ByVal eventargs As EventArgs) ' Notify the DataGridView that the contents of the cell have changed. valueIsChanged = True Me.EditingControlDataGridView.NotifyCurrentCellDirty(True) MyBase.OnValueChanged(eventargs) End Sub End Class
这篇关于我想在datagridview列中设置日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文