Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
voronbandit
0 / 0 / 0
Регистрация: 12.04.2015
Сообщений: 29
#1

Как заполнить DataGridView в потоке BakcgroundWorkover - Visual Basic .NET

21.09.2015, 15:35. Просмотров 217. Ответов 2
Метки нет (Все метки)

Комрады, подкиньте идею ламеру как корректно увязать между собой Грид и Бэковер?
Маленький саб, который грузит в грид каталог файлов.
Собственно хочется чтобы во время процесса форма не висла.
Если саб засовываешь в бэквокер , то ругается зараза....

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
    Private Sub Search(ByVal fold As String, ByVal mask As String)
        Dim cdir As String
        Dim Dirs As String()
        Dirs = System.IO.Directory.GetDirectories(fold, "*", IO.SearchOption.TopDirectoryOnly)
        If Not Dirs Is Nothing Then
            For Each cdir In Dirs
                Me.Search(cdir, mask)
            Next
        End If
        Dim files As String()
        Try
            files = System.IO.Directory.GetFiles(fold, mask)
 
            For iItem As Integer = 0 To UBound(files)
                Dim row As New DataGridViewRow
                row.Height = 30
                dgvMain.Rows.Add(row)
                dgvMain.Item(0, dgvMain.Rows.Count - 1).Value = FileIO.FileSystem.GetFileInfo(files(iItem)).DirectoryName
                dgvMain.Item(1, dgvMain.Rows.Count - 1).Value = System.IO.Path.GetFileNameWithoutExtension(files(iItem))
                dgvMain.Item(2, dgvMain.Rows.Count - 1).Value = FileIO.FileSystem.GetFileInfo(files(iItem)).Extension
                dgvMain.Item(3, dgvMain.Rows.Count - 1).Value = FileIO.FileSystem.GetFileInfo(files(iItem)).Length
                prbMain.Value += 1
                If prbMain.Value = 1000 Then
                    prbMain.Value = 0
                End If
            Next
        Catch ex As Exception
        End Try
    End Sub
Добавлено через 5 часов 6 минут
Вопрос решен с помощью Thread и CheckForIllegalCrossThreadCalls = False
Единственное перестал работал скролл на гриде... хз.. почему.
Мышой работает... сам скрол нет.

vb.net
1
2
3
4
5
6
7
8
    Private Sub ThreadSub()
        Dim t As New Threading.Thread(AddressOf Longtestprocess)
        t.Start()
    End Sub
 
    Private Sub Longtestprocess()
        Call Search(Directory.GetCurrentDirectory, "*")
    End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2015, 15:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как заполнить DataGridView в потоке BakcgroundWorkover (Visual Basic .NET):

Как правильно заполнить таблицу DataGridView - Visual Basic .NET
Данные из txt файла выгружаются в таблицу, после нужно сделать поиск по данным например по ФИО. у меня программа находит и выделяет только...

Как заполнить DataGridView данными из Excel файла - Visual Basic .NET
Добрый вечер. Есть Excel файл , в нем таблица (условно названа Таблица1) Как к ней подключиться? С Аксессом все было просто и понятно,...

Заполнить определенный столбец в DataGridView - Visual Basic .NET
Как можно вставить в DataGridView1 только второй столбец? Как пропустить первый столбец, вставить второй и третий тоже пропустить...

WPF. Заполнить DataGridView данными из БД - Visual Basic .NET
Всё просто . Надо заполнить Datagrid информацией из БД и при изменении в ней значения чтобы автоматически сохранялось в БД . Перерыл весь...

.NET 4.x Как в потоке запустить процедуру с параметрами - Visual Basic .NET
Пытаюсь сделать отдельный поток для процедуры. Получаю такую ошибку: Кто может русским языком объяснить что значит эта ошибка? ...

.NET 4.x Как запустить операцию в отдельном потоке (Network.Ping) - Visual Basic .NET
... выполнении этой части кода: If My.Computer.Network.Ping("192.168.0.2", 200) Then Пингуется машина в своей локальной сети. Задумка -...

2
RoyDenzel
17 / 17 / 7
Регистрация: 15.07.2015
Сообщений: 68
21.09.2015, 16:24 #2
Цитата Сообщение от voronbandit Посмотреть сообщение
Единственное перестал работал скролл на гриде... хз.. почему.
Перед добавлением скролл выключить, после, включить
vb.net
1
2
3
datagv1.ScrollBars = ScrollBars.None
'добавить данные
datagv1.ScrollBars = ScrollBars.Both
0
voronbandit
0 / 0 / 0
Регистрация: 12.04.2015
Сообщений: 29
21.09.2015, 17:02  [ТС] #3
Спс как раз хотел написать что так и сдел.
В итоге добавил внешний скрол.. чет мне больше понравилось.

vb.net
1
2
3
    Private Sub VScrollBar_Scroll(sender As Object, e As ScrollEventArgs) Handles VScrollBar.Scroll
        dgvMain.CurrentCell = dgvMain.Item(0, e.NewValue)
    End Sub
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2015, 17:02
Привет! Вот еще темы с ответами:

Как запустить функцию в новом потоке с несколькими параметрами? - Visual Basic .NET
Вся суть вопроса в заголовке. Было бы неплохо если есть маленький пример. Ибо с одним параметром то выходит, а дальше уж беда.

.NET 4.x Как создать новый элемент WebBrowser в новом потоке - Visual Basic .NET
Как создать новый элемент webbrowser в новом потоке? пытаюсь так: Dim frm As New Form Dim wb As New WebBrowser ...

Как реализовать в отдельном потоке проверку обновлений при старте программы - Visual Basic .NET
Приветствую всех! Возникла необходимость при старте приложения проверять на сайте наличие обновлений, за это отвечает следующий код: ...

Объсните, почему значение переменной в отдельном потоке другое и как его поменять? - Visual Basic .NET
вот фрагмент кода добавил msgbox и в первом случае переменная изменена а вот уже в новом потоке значение переменной такое как при...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.