vb.net - datagridview - не работает форматирование - PullRequest
1 голос
/ 19 ноября 2010

Ситуация :

У меня есть сетевое представление с одним столбцом (col1).

В определении сетки данных (представление конструктора) я создал эту строку и установил форматирование на C2 (или C0, или C - я пробовал их все).

затем я загружаю свое представление таблицы данных программно:

dbl_myValue as double   
dbl_myValue = 6.99

datagridview1.item(0,0) = dbl_myValue

В datagridView данные отображаются корректно: 6,99 $

Когда я "шпионю" за datagridview.item (0,0), , свойство "Значение" имеет значение Double.

проблема:

Не работает, если пользователь вручную вводит значение : щелкните в ячейке, введите числовое значение (скажем, 100, без десятичной дроби, чтобы избежать сложности), а затем оставьте ячейка (больше не нужно в режиме edit ). Форматирование просто не применяется.

Когда я "шпионю" за datagridview.item (0,0), , свойство "value" является STRING.

Итак, я думаю, что это проблема, но что я могу сделать?

Я пытался зайти в CellValidating и набить его кодом:

Private Sub DataGridView1_CellValidating(....) 

Dim c As Control = DataGridView_WorkOrderAddition.EditingControl

c.text = formatNumeric(c.text) 

c.text = convert.toDouble(c.text)

Но все равно не работает.

1 Ответ

3 голосов
/ 19 ноября 2010

Да, когда DGV не привязан, ячейки по умолчанию сохраняют строки. Установка свойства CellType столбца может решить, что десятичное число наиболее подходит для обработки денежных значений. Вам также необходимо реализовать событие DataError, чтобы предупредить пользователя о невозможности преобразования строки. Таким образом:

Public Class Form1
    Public Sub New()
        InitializeComponent()
        DataGridView1.Columns(0).ValueType = GetType(Decimal)
    End Sub

    Private Sub DataGridView1_DataError(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
        MessageBox.Show(e.Exception.Message)
    End Sub
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...