我试图在datagridview列中屏蔽用户的输入,我发现这个准备好的类Masked edit column Class在列类型列表中添加了“掩码编辑列”选项。当我选择此列类型时,将在列属性列表中添加一个掩码字段。我尝试通过在“Mask”字段中添加一些掩码元素来完成我的工作,但是当我运行代码时它并没有限制我添加其他字符。我重新打开了'编辑列菜单',我看到'Mask'字段是空的。
我希望文本单元最多只能接受20个字符:1.Capital Letters(英语和希腊语),2。这三个字符(。, - ),3 .Number 0-9
所以作为第一个测试,我只使用这个面具(> ???????????????????)但它没有工作,因为它没有将我的字符转换为大写和当我结束细胞编辑时,我接受了超过20个字符。
我不确定要走的路是Masked Text Box方式。我在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)
所以,
我需要一个蒙面文本单元格吗?如果是的话(为什么这个面具盒不能保留我进入的面具?我怎样才能用这个课来完成我的工作?)
我可以选择如何限制列的单元格中的某些字符? (然后我将在cellEndEdit上转换为大写)
答案 0 :(得分:0)
我最后通过删除cellvaluechanged事件中不需要的字符来实现它,这似乎是在我结束单元格编辑时引发的,例如点击"输入"。