Public Class DgvNumberTextBoxCell
Inherits DataGridViewTextBoxCell
Private _mask As String
Private _promptChar As Char
Private _includePrompt As DataGridViewTriState
Private _includeLiterals As DataGridViewTriState
Private _validatingType As Type
Private _numberLength As Integer
Private _xiaoshuLength As Integer
Public Sub New()
mask = ""
promptChar = "_"c
includePrompt = DataGridViewTriState.NotSet
includeLiterals = DataGridViewTriState.NotSet
validatingType = GetType(String)
End Sub
''' <summary>
''' 编辑在用户编辑单元格时
''' </summary>
''' <param name="rowIndex">当前行</param>
''' <param name="initialFormattedValue">值</param>
''' <param name="dataGridViewCellStyle">Cell样式</param>
Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, ByVal initialFormattedValue As Object, ByVal dataGridViewCellStyle As DataGridViewCellStyle)
MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle)
Dim maskedTextBoxEditing As DgvNumberTextBoxControl = DataGridView.EditingControl
'设置MaskedTextBox特性
Dim dgvColumn As DataGridViewColumn = OwningColumn
If TypeOf (dgvColumn) Is DgvNumberTextBoxColumn Then
'if (dgvColumn is DataGridViewMaskedTextBoxColumn)
Dim maskedTextBoxColumn As DgvNumberTextBoxColumn = dgvColumn
If (String.IsNullOrEmpty(Mask)) Then
maskedTextBoxEditing.Mask = maskedTextBoxColumn.Mask
Else
maskedTextBoxEditing.Mask = Mask
End If
'提示字符
maskedTextBoxEditing.PromptChar = PromptChar
If ValidatingType Is Nothing Then
maskedTextBoxEditing.ValidatingType = maskedTextBoxColumn.ValidatingType
Else
maskedTextBoxEditing.ValidatingType = ValidatingType
End If
If Me.Value Is Nothing Then
maskedTextBoxEditing.Text = ""
Else
maskedTextBoxEditing.Text = Me.Value.ToString
End If
End If
End Sub
''' <summary>
''' 设置编辑状态单元格类型
''' </summary>
Public Overrides ReadOnly Property EditType() As Type
Get
Return GetType(DgvNumberTextBoxControl)
End Get
End Property
''' <summary>
''' 设置正则表达式
''' </summary>
Public Overridable Property Mask() As String
Get
Return _mask
End Get
Set(ByVal value As String)
_mask = value
End Set
End Property
''' <summary>
''' 用于提示用户进行输入的字符。默认为下划线 (_)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>提示字符位于尚未赋予输入值的可编辑位置</remarks>
Public Overridable Property PromptChar() As Char
Get
Return _promptChar
End Get
Set(ByVal value As Char)
_promptChar = value
End Set
End Property
''' <summary>
''' 获取或设置一个值,该值指示当显示带格式的字符串时是否使用 PromptChar 来表示缺少的用户输入
''' </summary>
Public Overridable Property IncludePrompt() As DataGridViewTriState
Get
Return _includePrompt
End Get
Set(ByVal value As DataGridViewTriState)
_includePrompt = value
End Set
End Property
''' <summary>
''' 获取或设置一个值,该值指示输入掩码中的原义字符是否应包含在带格式的字符串中
''' </summary>
Public Overridable Property IncludeLiterals() As DataGridViewTriState
Get
Return _includeLiterals
End Get
Set(ByVal value As DataGridViewTriState)
_includeLiterals = value
End Set
End Property
''' <summary>
''' 验证类型
''' </summary>
Public Overridable Property ValidatingType() As Type
Get
Return _validatingType
End Get
Set(ByVal value As Type)
_validatingType = value
End Set
End Property
''' <summary>
''' 输入数字长度
''' </summary>
Public Overridable Property NumberLength() As Integer
Get
Return _numberLength
End Get
Set(ByVal value As Integer)
_numberLength = value
End Set
End Property
''' <summary>
''' 小数数字长度
''' </summary>
Public Overridable Property XiaoshuLength() As Integer
Get
Return _xiaoshuLength
End Get
Set(ByVal value As Integer)
_xiaoshuLength = value
End Set
End Property