Несмотря на то, что сообщение не становится моложе, я думаю, что ответ Миго отвечает только на часть вопроса, и, возможно, кто-то еще может быть заинтересован. Ответ Migo объяснил, как отображать числа в процентах, но оставил вопрос о том, как пользователь может вводить строки, включая символ процента (которые интерпретируются как двойные), без ответа. Попытка преобразовать EditedFormattedValue ячейки, которая запускает событие DataError, чтобы удвоить, добилась цели для меня:
Private Sub dgvs_DataError(sender As Object, e As DataGridViewDataErrorEventArgs) Handles dgv.DataError
Dim dgv As DataGridView
Dim percentageClearedValue As Double
dgv = CType(sender, DataGridView)
If e.Exception IsNot Nothing Then
percentageClearedValue = ConvPercentToDbl(dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).EditedFormattedValue)
If percentageClearedValue <> Double.MinValue Then
dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = percentageClearedValue
dgv.UpdateCellValue(e.ColumnIndex, e.RowIndex)
dgv.EndEdit()
e.ThrowException = False
End If
End If
End Sub
Функция ConvPercentToDbl пытается преобразовать процентную строку в двойную. Если это не удается, возвращается Double.MinValue.