maskedEditColumn datagridview如何使用class?这是我需要的吗?

maskedEditColumn datagridview how to use class? is it what i need?

我正在尝试屏蔽用户在 datagridview 列中的输入,我发现这个 class Masked edit column Class 在列类型列表中添加了一个 'mask edit column' 选项。当我 select 此列类型时,将在列属性列表中添加掩码字段。我试图通过在此 'Mask' 字段中添加一些掩码元素来完成我的工作,但是当我 运行 代码时,它并没有限制我添加其他字符。我重新打开 'edit columns menu',我看到 'Mask' 字段是空的。

我希望文本单元最多接受 20 个字符,并且只接受:1.Capital 字母(英语和希腊语),2.these 三个字符(.,-),3.Numbers 0- 9

所以作为第一个测试,我只使用了这个掩码(>???????????????????????) 但它没有用,因为它没有将我的字符转换为大写并在我结束单元格编辑时接受了超过 20 个字符。

我不确定要走的路是屏蔽文本框方式。我在 vb 上做了很多项目,我曾经在文本框的 textChanged 事件中使用循环来限制字符输入。循环是这样的:(但我现在不能在 valueChanged 事件中使用它,因为似乎 'value' 没有 selectionStart 属性。)

Dim charactersDisallowed As String = "!@#$%^&*()+=|}{][:;?/><.,~""

        Dim theText As String = txtCopies.Text
        Dim Letter As String
        Dim SelectionIndex As Integer = txtCopies.SelectionStart
        Dim Change As Integer

        For x As Integer = 0 To txtCopies.Text.Length - 1
            Letter = txtCopies.Text.Substring(x, 1)
            If charactersDisallowed.Contains(Letter) Then
                theText = theText.Replace(Letter, String.Empty)
                Change = 1
            End If
        Next

        txtCopies.Text = theText
        txtCopies.Select(SelectionIndex - Change, 0)

所以,

  1. 我需要的是屏蔽文本单元格吗?如果是(为什么这个面具盒没有保存我输入的面具?我如何使用这个 class 来完成我的工作?)

  2. 我可以交替使用什么来限制列单元格中的某些字符? (然后我将在 cellEndEdit 上转换为大写)

我最终通过删除 cellvaluechanged 事件中不需要的字符来做到这一点,当我结束单元格的编辑时,例如点击 "Enter"。