Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
26 / 26 / 6
Регистрация: 09.09.2015
Сообщений: 155

DataGridView тормозит

19.11.2017, 17:32. Показов 1442. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
DataGridView тормозит, то делать. DoubleBuffered включен. Есть ещё варианты его ускорить?
Тормоза при прокрутке, ресайзе, перетаскивание окна.

Приложение Windows Forms
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2017, 17:32
Ответы с готовыми решениями:

DataGridView с картинками тормозит форму
Здравствуйте, Есть форма с DataGridView с иконками, из за неё форма тормозит при перемещении проблема: при перемещении формы она ...

Тормозит прокрутка таблицы DataGridView при загруженной базе в 78 строк
Как можно исправить, или настроить DataGridView на более плавную работу и прокрутку, а то уже второе приложение пишу с использованием этого...

Какое использовать события в datagridview, чтобы значения из combobox обновлялись в datagridview
Всем привет.Нужна помощь по следующему вопросу.В datagridview загружаются значения из двух разных таблиц.Одно из полей datagridview это...

9
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
19.11.2017, 19:24
BatyrbekAl, DoubleBuffered включен у формы? или у грида?
В списке свойств грид не имеет DoubleBuffered, оно у него скрыто, но доступно яерез Reflection или, создайте ноый класс, унаследуйте его от DataGridView и в методе NEW укажите DoubleBuffered = True...
Даллее скомпилируйте проект, и данный грид станет доступен в списке элементов управления... его и спользуйте.
1
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,591
Записей в блоге: 1
20.11.2017, 11:18
Цитата Сообщение от BatyrbekAl Посмотреть сообщение
DataGridView тормозит, то делать
это нормально
0
26 / 26 / 6
Регистрация: 09.09.2015
Сообщений: 155
20.11.2017, 12:21  [ТС]
Yury Komar, DoubleBuffered включен через Reflection, и есть сильные улучшения, но все рано тормозит
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
21.11.2017, 04:00
BatyrbekAl, видимо ооочень много колонок у вас в нем? и строк тоже.
наверное будет лучщим решением - загружать данные не все сразу в него, а постранично... тоесть пачками по какому-то условию, принцыпу или кнопочки сделать которые будут подружать определенную часть данных...
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
21.11.2017, 13:47
BatyrbekAl, если данных много используйте VirtualMode.
3
26 / 26 / 6
Регистрация: 09.09.2015
Сообщений: 155
22.11.2017, 13:26  [ТС]
ovva, Можете привести пример, если честно не врублюсь как это сделать
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
22.11.2017, 13:41
Например, https://www.cyberforum.ru/blog... g3838.html
1
26 / 26 / 6
Регистрация: 09.09.2015
Сообщений: 155
22.11.2017, 15:36  [ТС]
ovva, Идея мне нравится , но пример на сишарпе в котором я не разбираюсь.

Попробую поискать на визуал бейсике. Спасибо.
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
22.11.2017, 16:18
Перевод примера на VB.Net
Кликните здесь для просмотра всего текста
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
Imports System.IO
Imports System.Text
Public Class Form3
    Private cache As Cached_File
    Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'если нет файла для тестирования используйте для его формирования CreateFileIfNeed
        Dim file = "c:\temp345.txt"  '400 mb
        cache = New Cached_File()
        cache.OpenFile(file, vbTab)
        With DataGridView1
            .Parent = Me
            .Dock = DockStyle.Fill
            .VirtualMode = True
            .AllowUserToAddRows = False
            .ReadOnly = True
            .RowCount = cache.LinesCount
            .ColumnCount = cache(0).Length
        End With
    End Sub
    Private Sub DataGridView1_CellValueNeeded(sender As System.Object, e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles DataGridView1.CellValueNeeded
        InlineAssignHelper(e.Value, cache(e.RowIndex)(e.ColumnIndex))
    End Sub
    Private Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T
        target = value
        Return value
    End Function
    'Private Sub CreateFileIfNeed(filePath As String)
    '    If Not File.Exists(filePath) Then
    '        Dim rnd = New Random()
    '        Dim sb = New StringBuilder()
    '        Using bw = New StreamWriter(filePath)
    '            For i As Integer = 0 To 199999
    '                sb.Length = 0
    '                sb.AppendFormat(i.ToString())
    '                For j As Integer = 0 To 255
    '                    sb.Append(vbTab + rnd.Next(10000000))
    '                Next
    '                bw.WriteLine(sb.ToString())
    '            Next
    '        End Using
    '    End If
    'End Sub
End Class
 
Public Class Cached_File
    Private linePositions As New List(Of UInteger)
    Private loadedLines As New List(Of String())
    Private firstLoadedLineIndex As Integer
    Const preLoadCount As Integer = 100
    Private filePath As String
    Private separator As Char
    Public ReadOnly Property LinesCount() As Integer
        Get
            Return linePositions.Count
        End Get
    End Property
    Public Sub OpenFile(fPath As String, sep As Char)
        filePath = fPath
        separator = sep
        linePositions.Clear()
        linePositions.Add(0)
        Using fs = New FileStream(filePath, FileMode.Open)
            Dim length = fs.Length
            For i As Integer = 0 To length - 1
                If fs.ReadByte() = Asc(ControlChars.Lf) Then
                    linePositions.Add(CUInt(fs.Position + 1))
                End If
            Next
        End Using
        linePositions.RemoveAt(linePositions.Count - 1)
        Load(0)
    End Sub
    Private Sub Load(iLine As Integer)
        Dim from = Math.Max(0, iLine - preLoadCount)
        Dim [to] = Math.Min(from + preLoadCount * 2, linePositions.Count - 1)
        Dim count = [to] - from + 1
        loadedLines.Clear()
        Using sr = New StreamReader(filePath, Encoding.Default)
            sr.BaseStream.Seek(linePositions(from), SeekOrigin.Begin)
            For i As Integer = 0 To count - 1
                loadedLines.Add(sr.ReadLine().Split(separator))
            Next
        End Using
        firstLoadedLineIndex = from
    End Sub
    Default Public ReadOnly Property Item(iLine As Integer) As String()
        Get
            If iLine < 0 OrElse iLine >= linePositions.Count Then
                Throw New IndexOutOfRangeException()
            End If
            If iLine < firstLoadedLineIndex OrElse iLine >= firstLoadedLineIndex + loadedLines.Count Then
                Load(iLine)
            End If
            Return loadedLines(iLine - firstLoadedLineIndex)
        End Get
    End Property
End Class
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2017, 16:18
Помогаю со студенческими работами здесь

Копирование данных из одной DataGridView в другую DataGridView ?
Данные в первой таблице заполняются пользователем а во вторую таблицу(в другой форме) необходимо перенести часть этих данных. Подскажите...

Перенос данных из одного DataGridView в другой DatagridView
Доброго времени суток! Имеется DataGridView из которого нужно перенести информацию в другой DataGridView на другой форме (Таблица взята...

Свести количество найденных значений из DataGridView 1 в DataGridView 2
Необходимо посчитать количество значений по всем столбцам. В столбцах таблицы 1 считаем количество элементов у которых: 0 &lt;...

DataGridView тормозит
Здравствуйте. Возможно я где-то адово туплю, так что прошу направить на путь истины. Суть в чём - есть программа, с несколькими таблицами...

DataGridView тормозит при перемещении
Приветствую.Добавил дочернюю форму, в неё поместил datagridview теперь при перекрещении дочерней формы она тормозит это при том что данные...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru