2009-01-15 30 views
3

目前我使用:強制DataGridView Cell只接受數字輸入的最佳方式是什麼?

Private Sub dgvStock_CellEndEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvStock.CellEndEdit 
    Select Case Me.dgvStock.Columns(e.ColumnIndex).Name 
     Case "Quantity", "Unit Cost" 
      If Not IsNumeric(Me.dgvStock(e.ColumnIndex, e.RowIndex).Value) Then 
       Me.dgvStock(e.ColumnIndex, e.RowIndex).Value = 0 
      End If 
    End Select 
End Sub 

但有一個更好的解決方案?最好先防止非數字輸入,而不是在輸入後修復它。

回答

2

如果您傾聽了KeyPress事件而不是CellEndEdit事件,則您發佈的解決方案可能會更好。然後,您可以在用戶鍵入文本框時檢查有效值,如果輸入的值無效,則還原爲以前的值。

或者,這並不完全符合您的要求,但您可以通過某種視覺指示器告訴用戶他們輸入的內容無效,例如將ForeColor更改爲紅色?這會通知用戶不良數據,同時不會讓他或她拒絕某些拒絕某些按鍵的文本框。結合您當前的帖子輸入檢查可能是一個很好的解決方案。

1

您也可以設置該行的ErrorText屬性並在RowValidating事件中檢查標誌或錯誤文本。如果存在錯誤,請將取消設置爲true。當值有效時,不要忘記將errortext設置爲空字符串。

UPDATE:

我只是嘗試這樣做,來更好的解決方案: 檢查在CellValidating事件的價值,並設置ERRORTEXT,因爲在這裏你可以取消驗證。當前輸入的值可以通過屬性網格[e.ColumnIndex,e.RowIndex] .EditedFormattedValue

相關問題