我有一个 datagridview,其中一列是 Quantity 列,应该只允许整数。没有负号或小数点。我已阻止用户输入任何字符,但他们可以粘贴它们。我可以在验证中停止此操作,但我什至不希望显示粘贴的字符。我将如何检测和删除粘贴的字母以及粘贴的内容事件?

理想情况下,我也希望只有粘贴不起作用,所以如果该字段中已经有一个 2 并且他们粘贴了“测试”,那么 2 将保留,尽管这并不重要。

最佳答案

这是一种方法:

'Set a flag to show when the form has finished initialising
Dim initialising As Boolean = True

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    'Form is initialised so set boolean to false
    initialising = False
End Sub

Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
'Only process once the form is initialised as values don't exist yet!
If Not initialising Then
        If Not IsNothing(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value) Then
            'If the clipboard contains text
            If Clipboard.ContainsText Then
                ' Check to see if the value of the cell matches whats in the clipboard
                If CStr(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value) = Clipboard.GetText Then
                    'You know its been pasted
                    If Not IsNumeric(CStr(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value)) Then
                        'This value should be rejected
                    Else
                        'This value is allowed
                    End If
                End If
            End If
        End If
    End If
End Sub

有关解释,请参阅我的注释代码。

我不确定您是否希望在此事件上执行此操作,因为在用户离开单元格之前它不会触发该事件。但是,希望我根据剪贴板中的内容检查值的方法可以帮助您确定它是否是粘贴的值。

关于vb.net - vb.net Datagridview 中的一列不应允许粘贴非整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16482961/

10-15 00:45