我有一个仅接受货币金额的文本框(例如123.40),我编写了以下例程以仅允许数字,小数点和退格键。问题是它不允许用户将值(例如Ctrl-V)复制并粘贴到文本框中。
Private Sub unitPriceTxtBox_keypress(ByVal sender As System.Object, ByVal e As KeyPressEventArgs) Handles unitPriceTxtBox.KeyPress
If (Not e.KeyChar = ChrW(Keys.Back) And ("0123456789.-").IndexOf(e.KeyChar) = -1) Or (e.KeyChar = "." And unitPriceTxtBox.Text.ToCharArray().Count(Function(c) c = ".") > 0) Then
e.Handled = True
End If
End Sub
我正在网上做一些研究,ctrl v键使用代码22.请参阅https://social.msdn.microsoft.com/Forums/en-US/5824457e-9112-43ef-83df-7037a36dd365/what-is-the-keychar-for-ctrlc-and-ctrlv-in-c?forum=winforms,但它似乎不起作用。
密钥代码的另一个参考是在这里。 https://msdn.microsoft.com/en-us/library/system.windows.forms.keys(v=vs.110).aspx
任何人都有见解?
感谢。
答案 0 :(得分:4)
您可以使用KeyDown
事件。您需要验证剪贴板中的文本。
Private Sub unitPriceTxtBox_KeyDown(sender As Object, e As KeyEventArgs) Handles unitPriceTxtBox.KeyDown
If e.Modifiers = Keys.Control AndAlso e.KeyCode = Keys.V Then
unitPriceTxtBox.Text = Clipboard.GetText()
End If
End Sub
答案 1 :(得分:0)