Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Обработка ввода значений в DataGridView


Автор: Linus 12.12.2006, 20:33
Имеется DataGridView, в котором есть DataGridViewTextBoxColumn. В разные ячейки этого столбца пользователю дозволено вводить данные определённого типа, например, в первую ячейку можно ввести любое строковое значение, в то время, как, например, в 4-ю, 10 и тд - только значение типа float. Как можно сделать "проверку на дурака", чтобы пользователь не смог ввести ошибочное значение в определённые ячейки?


P.S.

Сделал для ячейки такую штуку:
Код

form.dataGridView1.Rows[i].Cells[2].ValueType = System.Type.GetType("System.Single");


Теперь, если туда ввести, например, "абвгд" вылетает 
Цитата
System.FormatException: Input string was not in a correct format. ---> System.FormatException: Input string was not in a correct format.

Только я теперь не знаю, куда вставить try...catch, чтобы эту штуку отловить. Может имеется более "нормальный" способ делать проверку на правильность ввода? Помогите пожалуйста.

Автор: DarkDragon 13.12.2006, 14:43
try...catch некуда и неда ставить smile 
Надо вот ошибки до конца читать smile 

Последняя фраза в диалоге об ошибке:
Цитата

To replace this default dialog handle the DataError event.


Говоря по русски. Если не хочешь чтобы всплывал стандартный диалог, поставь обработку события DataError.

теперь гляди сюды:
Код

        private void dg1_dataerror(object sender, DataGridViewDataErrorEventArgs e)
        {
           // Если ты сюда ни чего не вставишь, то при ошибочном значение, не произойдет ничего, кроме того что ты не
           // сможешь перейти в другую ячейку, до тех пор пока не введешь правильное значение.
           // Можешь поставить MessageBox (...) со своим сообщением.
        }

// Установка обработчика события:
            dataGridView1.DataError += new DataGridViewDataErrorEventHandler(dg1_dataerror);


Ну вот тебе и try_catch smile

Автор: Linus 13.12.2006, 15:07
DarkDragon, спасибо большое. Теперь разобрался. У меня даже в мыслях не было, что здесь делегат на exception выставить возможно, теперь реализовал  smile  Спасибо  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)