Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 30.09.2015
Сообщений: 13

DataGridView: как отобразить, что данные введены неправильно?

16.02.2017, 17:11. Показов 850. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все добрый день.
Подскажите как отобразить информацию в ячейке если внесенные данные не совпадают с форматом ячейки?
Пример:
формат ячейки время (НН:hh)
в ячейку вносятся буквы или цифры не формата времени 55:89
Вопрос возможно в ячейку поставить знак восклицания или красный кружек или еще как-то оповестить пользователя что данные введены не корректно
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2017, 17:11
Ответы с готовыми решениями:

Прочитать данные из XML файла и отобразить их в DataGridView?
Как прочитать данные из файла в Datagridview?

При выборе клиента, отобразить его данные в DataGridView
БД Access+ привязка к datasource. Нужно при клике (допустим выбрали клиента) открыть его карточку в другом гриде(отдельная связанная...

Проверка символов, если неправильно введены данные - как их не дать сохранить и записать?
Ребята, в общем вопрос вот в чем: При записи какого-либо счета я проверила на наличие только цифр, чтоб не содержалось каких-либо других...

4
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
16.02.2017, 22:09
Наверное HH:mm?

Выковырял кусок из одного моего проекта.
При неправильном формате данных в левом верхнем углу ячейки рисуется красный треугольничек как в Excel


Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Imports System.Text.RegularExpressions
Public Class Form1
 
 
    Private _ErrTrianglePoints() As Point = New Point() {New Point(0, 0), New Point(0, 8), New Point(8, 0)}
 
    Public Sub DGVCellPaint(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
        If e.RowIndex = -1 Or e.ColumnIndex = -1 Then Return ' If Not e.ColumnIndex <> [index конкретного столбца] Then Return 
        If CInt(CType(sender, DataGridView)(e.ColumnIndex, e.RowIndex).Tag) = 1 Then
            e.Handled = True
            e.Paint(e.ClipBounds, DataGridViewPaintParts.All)
 
            'вариант 1
            'Dim points() As Point = New Point(2) {}
            'For i As Integer = 0 To 2
            '    points(i) = _ErrTrianglePoints(i) + e.CellBounds.Location
            'Next
 
            'вариант 2 с LINQ
            Dim points() As Point = (From p As Point In _ErrTrianglePoints Select p + e.CellBounds.Location).ToArray()
 
            e.Graphics.FillPolygon(Brushes.Red, points) 'фон
            e.Graphics.DrawPolygon(Pens.White, points) 'обводка
        End If
    End Sub
 
 
    'проверка содержания ячейки после изменения
    Public Sub DGVCellEndEdited(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
        If e.RowIndex = -1 Or e.ColumnIndex = -1 Then Return
        Dim tmp As String = CType(sender, DataGridView)(e.ColumnIndex, e.RowIndex).Value
 
        If String.IsNullOrEmpty(tmp) Then
            CType(sender, DataGridView)(e.ColumnIndex, e.RowIndex).Tag = 0
            Return
        End If
 
        Dim m As Match = Regex.Match(tmp, "\b(\d{1,2})(?:[:\.,\s])(\d{1,2})\b") ' регулярка позволяет парсить значения вида 00:00, 00,00, 00.00, 00 00
 
        If m.Success Then
            Dim hh As Integer = Integer.Parse(m.Groups(1).Value)
            Dim mm As Integer = Integer.Parse(m.Groups(2).Value)
            If hh > 23 Or mm > 59 Then
                GoTo cellErr
            Else
                CType(sender, DataGridView)(e.ColumnIndex, e.RowIndex).Tag = 0
                CType(sender, DataGridView)(e.ColumnIndex, e.RowIndex).Value = String.Format("{0:00}:{1:00}", hh, mm) ' форматирование согласно требованиям 00:00
            End If
        Else
cellErr:    CType(sender, DataGridView)(e.ColumnIndex, e.RowIndex).Tag = 1 ' сведения об ошибке сохраняются в теге ячейки
        End If
    End Sub
 
 
End Class
Логику можно расширить распределив роли на проверке определенных колонок и выставлением разных кодов ошибок, что бы при рисовании можно было при помощи конструкции select case разукрасить разные виды ошибок

0
148 / 70 / 12
Регистрация: 11.02.2017
Сообщений: 310
17.02.2017, 06:17
a = Error, 2 =Error, 22:22 = Not Error
VB.NET
1
2
3
4
5
6
7
8
9
10
Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
        Try
            If DataGridView1.CurrentCell IsNot Nothing Then
                Dim d As Date
                d = CDate(DataGridView1.CurrentCell.Value)
            End If
        Catch ex As Exception
            DataGridView1.CurrentCell.Value = "Error"
        End Try
End Sub
Миниатюры
DataGridView: как отобразить, что данные введены неправильно?  
0
148 / 70 / 12
Регистрация: 11.02.2017
Сообщений: 310
17.02.2017, 06:41
Возможно еще так чтобы отсечь года, месяцы и "прочую лабудень":
VB.NET
1
d = String.Format(CDate(DataGridView1.CurrentCell.Value), "HH:ss")
Не проверял.
0
1 / 1 / 0
Регистрация: 30.09.2015
Сообщений: 13
17.02.2017, 21:01  [ТС]
Sklifosofsky Спасибо то что нужно все работает идеально
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2017, 21:01
Помогаю со студенческими работами здесь

Как отобразить данные в datagridview?
Подскажите пожалуйста как отобразить данные в datagridview, если данные берутся из БД с помощью функции: public List&lt;User&gt;...

Как отобразить данные в dataGridView?
Здравствуйте друзья. У меня есть запрос к акцесовской базе SELECT history.h_date, history.is_con, ip_address.host_name FROM...

Как отобразить данные из SQLite в DataGridView?
Как отобразить данные с БД SQLite в DataGridView, подскажите, пожалуйста... Добавлено через 2 часа 54 минуты Спасибо за неответ)...

Как отобразить данные с таблицы MySQL в DataGridView?
Я новичок в этом деле, учусь. Такой вопрос: Есть БД, есть форма, кнопка и DataGridView. Как отобразить данные с таблицы БД в DataGridView?

Как сделать выборку из БД и отобразить данные в DataGridView
Здравствуйте. Разбирался с DataGridView, возникло несколько вопросов. 1. Подскажите пожалуйста, как сделать так, чтобы на этот элемент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru