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

Окно со статусбаром и кнопкой "Отмена". Как отследить событие нажатия кнопки?

15.12.2018, 21:08. Показов 1465. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, коллеги!

Ситуация следующая. Из MainForm запускаю отображение второй формы (ProgressForm)
На второй форме есть ProgressBar1 и Button1. т.е. вторая форма является неким всплывающим окном, отображающем статусбар. Дальнейшая работа программы продолжается в процедуре, находящейся в другом модуле. Соответственно я не могу "отловить" событие нажатия на кнопку 1 на форме со статусбаром (предполагается кнопка "Отмена")
Подскажите, как можно отследить события на второй форме для отработки процедуры отмены?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2018, 21:08
Ответы с готовыми решениями:

Отследить событие нажатия кнопки в другом потоке
Нужно отследить событие нажатия кнопки, не в потоке формы, а в параллельном. Многопоточное клиент...

Отследить событие нажатия кнопки и вывести данные в консоль
Всем приветы. есть сайт, http://serj.ws/salyk, на нём скрипт висит поиска налогоплательщика по...

Как отследить событие нажатия на одной из строк в ToolBar?
на ToolBar есть кнопка (пускай с индексом 2) а у нее есть менюшка (тобишь вызывается стрелочкой...

Как отследить событие нажатия поля checked на datetimepicker?
Всем доброго времени суток. У меня на форме лежит datetimepicker, у него включенно свойство...

Как отследить событие нажатия каждого элемента ListView по отдельности
Здравствуйте возникло несколько вопросов по ListView 1. Как отследить событие нажатия каждого...

19
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
15.12.2018, 21:57 2
Родительская форма:
VB.NET
1
2
3
4
5
Public Class Form1
    Public Sub B()
        MsgBox("Отмена")
    End Sub
End Class
Форма с кнопкой:
VB.NET
1
2
3
4
5
Public Class Form2
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Form1.B()
    End Sub
End Class
0
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
16.12.2018, 08:10  [ТС] 3
bbbw, не работает у меня такая связка.
0
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
16.12.2018, 10:15 4
Allleksey, Что значит не работает? Код покажите?
0
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
16.12.2018, 16:26  [ТС] 5
bbbw,

Модуль основной, родительской формы. Процедура вызова отображения ПрогрессБара и процедура изменения отображаемой информации к окне прогрессбара находятся тут:
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Class FormMain
 
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
...
...
 
Call OpenFormProgress()
...
...
Call WriteProgress(strNewWriteText)
...
...
End Sub
 
End Class


Модуль подпрограмм. В нем располагаются процедуры показа окна ПрогрессБара и процедура смены информации.
Кликните здесь для просмотра всего текста
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
Module ModuleSubProgramm
    Sub OpenFormProgress()
        With FormProgress
            .Label1.Text = ""
            .Label2.Text = ""
            .Label3.Text = ""
            .Label4.Text = ""
            .Label5.Text = ""
            .Label6.Text = ""
            .Show()
            .ShowInTaskbar = True
        End With
    End Sub
 
  Sub WriteProgress(strNewWriteText)
        Dim strPreviousWriteText As String
        If FormProgress.Label1.Text = "" Then
            FormProgress.Label1.Text = strNewWriteText & " ..."
 
            Exit Sub
        End If
        If FormProgress.Label2.Text = "" Then
            strPreviousWriteText = Left(FormProgress.Label1.Text, Len(FormProgress.Label1.Text) - 3) & " Обработка завершена"
            FormProgress.Label1.Text = strPreviousWriteText
            FormProgress.Label2.Text = strNewWriteText & " ..."
            Exit Sub
        End If
        If FormProgress.Label3.Text = "" Then
            strPreviousWriteText = Left(FormProgress.Label2.Text, Len(FormProgress.Label2.Text) - 3) & " Обработка завершена"
            FormProgress.Label2.Text = strPreviousWriteText
            FormProgress.Label3.Text = strNewWriteText & " ..."
            Exit Sub
        End If
        If FormProgress.Label4.Text = "" Then
            strPreviousWriteText = Left(FormProgress.Label3.Text, Len(FormProgress.Label3.Text) - 3) & " Обработка завершена"
            FormProgress.Label3.Text = strPreviousWriteText
            FormProgress.Label4.Text = strNewWriteText & " ..."
            Exit Sub
        End If
        If FormProgress.Label5.Text = "" Then
            strPreviousWriteText = Left(FormProgress.Label4.Text, Len(FormProgress.Label4.Text) - 3) & " Обработка завершена"
            FormProgress.Label4.Text = strPreviousWriteText
            FormProgress.Label5.Text = strNewWriteText & " ..."
            Exit Sub
        End If
        If FormProgress.Label6.Text = "" Then
            strPreviousWriteText = Left(FormProgress.Label5.Text, Len(FormProgress.Label5.Text) - 3) & " Обработка завершена"
            FormProgress.Label5.Text = strPreviousWriteText
            FormProgress.Label6.Text = strNewWriteText & " ..."
            Exit Sub
        End If
        FormProgress.Label1.Text = FormProgress.Label2.Text
        FormProgress.Label2.Text = FormProgress.Label3.Text
        FormProgress.Label3.Text = FormProgress.Label4.Text
        FormProgress.Label4.Text = FormProgress.Label5.Text
        FormProgress.Label5.Text = Left(FormProgress.Label6.Text, Len(FormProgress.Label6.Text) - 3) & " Обработка завершена"
        FormProgress.Label6.Text = strNewWriteText & " ..."
    End Sub
 
End Module


Непосредственно модуль ПрогрессБара в котором размещена процедура обработки нажатия кнопки.
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
Public Class FormProgress
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Call CancalButton()
    End Sub
 
End Class


Процедуру CancalButton() где мне необходимо поместить? В модуле ModuleSubProgramm?
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
Sub CancalButton()
    MsgBox("Кнопка отмены нажата")
End Sub
0
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
16.12.2018, 17:19 6
Allleksey,
Цитата Сообщение от Allleksey Посмотреть сообщение
Процедуру CancalButton() где мне необходимо поместить? В модуле ModuleSubProgramm?
В модуле FormMain
Только не так как вы написали а Public Sub !
А вызывать так:
VB.NET
1
2
3
4
5
Public Class FormProgress
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       FormMain.CancalButton()
    End Sub
End Class
Либо можно так:
Цитата Сообщение от Allleksey Посмотреть сообщение
Модуль основной, родительской формы. Процедура вызова отображения ПрогрессБара и процедура изменения отображаемой информации к окне прогрессбара находятся тут:
Объявите переменную:
VB.NET
1
Public d as Boolean = False
Добавьте условие в цикл выполнения :
VB.NET
1
2
3
If d=True Then
MsgBox("Кнопка отмены нажата")
End If
Цитата Сообщение от Allleksey Посмотреть сообщение
Непосредственно модуль ПрогрессБара в котором размещена процедура обработки нажатия кнопки.
VB.NET
1
2
3
4
5
Public Class FormProgress
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        FormMain.d = True
    End Sub
End Class
Обязательно объявляйте общие переменные и функции какPublic
0
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
16.12.2018, 17:49  [ТС] 7
bbbw, что характерно, не работает.

Модуль с ПрогрессБаром
VB.NET
1
2
3
4
5
Public Class FormProgress
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Call FormMain.CancalButton()
    End Sub
End Class
Модуль с основной формой
VB.NET
1
2
3
4
5
6
7
Public Class FormMain
 
    Public Sub CancalButton()
        Debug.Print("Кнопка отмены нажата")
    End Sub
 
End Class
Еще что заметил... когда над кнопкой проходит мышь, кнопка меняет цвет (во всех формах). В этой форме нет такого. Нет визуального подтверждения, что кнопка нажимается. Может быть что то со свойствами самой формы не так?

Добавлено через 4 минуты
Когда открывается форма FormProgress... в меню задач Windows отображается и основная программа и форма ПрогрессБара. Но вот перевести фокус на основную форму я не могу. Форма с прогрессБаром находится сверху и фокус не переводится на основную форму.
0
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
16.12.2018, 19:13 8
Цитата Сообщение от Allleksey Посмотреть сообщение
Форма с прогрессБаром находится сверху и фокус не переводится на основную форму.
Как вызываете?
Сравните вызовы.
0
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
16.12.2018, 19:50  [ТС] 9
Цитата Сообщение от bbbw Посмотреть сообщение
Как вызываете?
Сравните вызовы.
Не совсем понял...

VB.NET
1
2
3
4
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Debug.Print("кнопка нажата")
        FormMain.CancalButton()
    End Sub
Даже так сообщение не выводится. Не отлавливается событие.
0
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
16.12.2018, 19:57 10
Allleksey, Форму как вызываете - сравните с вызовом другой формы.
Такое ощущение, что вы не форму вызываете а MsgBox
0
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
16.12.2018, 20:02  [ТС] 11
Есть еще один нюанс. В процессе всего времени показа FormProgress работает процедура в FormMain. После окончания работы этой процедуры FormProgress закрывается. Т.е. нет момента времени, когда программа бездействует и ждет события в одной из форм.
0
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
16.12.2018, 20:06 12
Цитата Сообщение от Allleksey Посмотреть сообщение
Т.е. нет момента времени, когда программа бездействует и ждет события в одной из форм.
Код покажите. А проще проект целиком.
0
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
16.12.2018, 20:10  [ТС] 13
Цитата Сообщение от bbbw Посмотреть сообщение
Такое ощущение, что вы не форму вызываете а MsgBox
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Sub OpenFormProgress()
        With FormProgress
            .Label1.Text = ""
            .Label2.Text = ""
            .Label3.Text = ""
            .Label4.Text = ""
            .Label5.Text = ""
            .Label6.Text = ""
            .Show()
            .ShowInTaskbar = True
        End With
    End Sub
Или где то еще нужно что то проверить?

Добавлено через 3 минуты
Цитата Сообщение от bbbw Посмотреть сообщение
Код покажите. А проще проект целиком.
Текст всей процедуры.
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        DataGridView1.Rows.Clear()
 
        Dim strNewWriteText As String
        Dim dblSummCosts As Double ' Сумма прямых затрат
        Dim intRowsNomber As Integer = 0
        Dim strShortCalcName As String ' Короткое имя файла калькуляции
        oExcelCalc.Visible = False
        ' определение значений для статусбара
        Dim StatusBarMaxVal As String = 0
        Dim decTotalWuthoutWAT As Decimal
 
        Dim arrExcelWorkSheet(151, 73)
 
        intCansel = 1
 
 
        For Each strCalcName As String In IO.Directory.GetFiles(strProjecrFolderCalc, "*.xlsx")
            StatusBarMaxVal = StatusBarMaxVal + 1
        Next
        FormProgress.ProgressBar1.Maximum = StatusBarMaxVal
        FormProgress.ProgressBar1.Step = 1
        FormProgress.ShowInTaskbar = False
        FormProgress.Text = "Формирование сводной информации"
 
        ' Обнуление раздела условий оплаты перед началом заполнения таблицы.
        Me.TextBox6.Text = ""
        Me.TextBox7.Text = ""
        Me.TextBox8.Text = ""
        Me.TextBox9.Text = ""
        Me.TextBox10.Text = ""
 
        Call OpenFormProgress()
 
        Dim FirstFile As Boolean = False
        ' Заполнение таблицы значениями из файлов
 
        For Each strCalcName As String In IO.Directory.GetFiles(strProjecrFolderCalc, "*.xls*") ' переменная stCalcName содержит название открываемого файла с путем
            ' Проверка на наличие временного файла.
            If strCalcName.Contains("~$") Then ' Если временный файл найден
                GoTo Cont2 ' то переход к следующемуфайлу
            End If
            Dim temp As String = Mid$(strCalcName, InStrRev(strCalcName, "\") + 1)
            Dim strPosName As String = Strings.Left(temp, Len(temp) - 5)
            strShortCalcName = Strings.Left(Dir(strCalcName), Len(Dir(strCalcName)) - 5)
 
 
 
            Me.DataGridView1.Rows.Add()
            intRowsNomber = Me.DataGridView1.Rows.Count - 1
 
 
            strNewWriteText = strPosName
            Call WriteProfress(strNewWriteText)
            If Len(strCalcName) > 210 Then
                Me.DataGridView1.Item("FileName", intRowsNomber).Value = strCalcName ' Название файла
                Me.DataGridView1.Item("PositionName", intRowsNomber).Value = strPosName ' Название позиции
                Me.DataGridView1.Item("Note", intRowsNomber).Value = "Не допустимая длина полного имени файла"
                GoTo Cont2
            End If
 
            oExcelCalc.Workbooks.Open(strCalcName) ' открытие файла калькуляции
 
            oExcelCalc.ActiveSheet.Unprotect(Password:="fedosov78!!")
 
            arrExcelWorkSheet = Me.oExcelCalc.Range("A1:BU151").Value ' Сохранение всего листа с калькуляцией в массиве
 
            ' Проверка открытого файла на соответствие версии калькуляции
            Dim decCalcCardVer As Decimal
            'decCalcCardVer = oExcelCalc.Range("BS18").Value
            decCalcCardVer = CDec(arrExcelWorkSheet(18, 71))
 
            Dim x As Integer
            Dim y As Integer
            x = Screen.PrimaryScreen.WorkingArea.Width / 2 - 230
            y = Screen.PrimaryScreen.WorkingArea.Height / 2
            FormProgressChangeVer.Location = New Point(x, y)
 
            If decCalcCardVer = 3.2 Then
                FormProgressChangeVer.ProgressBar1.Maximum = 85
                FormProgressChangeVer.Show()
                Call ChangVersion()
                FormProgressChangeVer.Close()
                decCalcCardVer = arrExcelWorkSheet(18, 71)
            End If
 
            If decCalcCardVer = 3.3 Then
                FormProgressChangeVer.ProgressBar1.Maximum = 81
                FormProgressChangeVer.Show()
                Call ChangVersion2()
                FormProgressChangeVer.Close()
                decCalcCardVer = arrExcelWorkSheet(18, 71)
            End If
 
            If decCalcCardVer = 3.4 Then
                FormProgressChangeVer.ProgressBar1.Maximum = 77
                FormProgressChangeVer.Show()
                Call ChangVersion3()
                FormProgressChangeVer.Close()
                decCalcCardVer = arrExcelWorkSheet(18, 71)
            End If
 
 
            If decCalcCardVer < 3.2 Then
                Me.DataGridView1.Item("FileName", intRowsNomber).Value = strCalcName ' Название файла
                Me.DataGridView1.Item("PositionName", intRowsNomber).Value = strPosName ' Название позиции
                Me.DataGridView1.Item("Note", intRowsNomber).Value = "Устаревшая версия калькуляционной карты"
                GoTo Cont
            End If
            If FirstFile = False Then
 
                Me.TextBox1.Text = arrExcelWorkSheet(26, 57)
                Me.TextBox10.Text = arrExcelWorkSheet(20, 40)
                Me.TextBox6.Text = arrExcelWorkSheet(21, 40)
                Me.TextBox7.Text = arrExcelWorkSheet(22, 40)
                Me.TextBox8.Text = arrExcelWorkSheet(23, 40)
                Me.TextBox9.Text = arrExcelWorkSheet(23, 43)
                FirstFile = True
            End If
            ' Заполнение таблицы значениями из прочитанного файла
 
            Me.DataGridView1.Item("FileName", intRowsNomber).Value = strCalcName ' Название файла
            Me.DataGridView1.Item("PositionName", intRowsNomber).Value = strPosName ' Название позиции
            Me.DataGridView1.Item("MaterialPrice", intRowsNomber).Value = arrExcelWorkSheet(3, 21) ' Цена материала
            Me.DataGridView1.Item("AccessoriesPrice", intRowsNomber).Value = arrExcelWorkSheet(4, 21) ' Цена комплектующих
            Me.DataGridView1.Item("ServicesPrice", intRowsNomber).Value = arrExcelWorkSheet(5, 21) ' Цена входящих услуг
            Me.DataGridView1.Item("OptionalEquipmentPrice", intRowsNomber).Value = arrExcelWorkSheet(129, 50) ' Цена дополнительного оборудования
            Me.DataGridView1.Item("LabolCoastPrice", intRowsNomber).Value = arrExcelWorkSheet(13, 21) ' Цена трудозатрат
            Me.DataGridView1.Item("OptionalMaterialPrice", intRowsNomber).Value = arrExcelWorkSheet(22, 21) ' Дополнительные затраты на материалы
            Me.DataGridView1.Item("Profitability", intRowsNomber).Value = Format(arrExcelWorkSheet(20, 18) * 100, "##0.0") ' Рентабельность в %
            Me.DataGridView1.Item("MarkupAdditionalEquipment", intRowsNomber).Value = Format(arrExcelWorkSheet(21, 18) * 100, "##0.0") ' Наценка на дополнительное оборудование в %
            Me.DataGridView1.Item("ShippingCost", intRowsNomber).Value = Format(arrExcelWorkSheet(23, 21), "### ### ##0.00") ' Стоимость доставки до клиента
 
           
            Me.DataGridView1.Item("TEG", intRowsNomber).Value = arrExcelWorkSheet(28, 57) ' ТЭГ
 
            Call CheckProfitability(intRowsNomber) ' Процедура анализа коэффициента рентабельности.
            Call ShowAttention() ' показывает предупреждение о низкой рентабельности по позиции
            Call CheckCalcEnd(intRowsNomber) ' переход на подпрограмму проверки окончания расчетов по калькуляционным картам
Cont:
 
            intRowsNomber = intRowsNomber + 1 ' увеличение номера строки на 1
            oExcelCalc.ActiveSheet.Protect(Password:="fedosov78!!")
            oExcelCalc.Application.DisplayAlerts = False
            oExcelCalc.Workbooks.Close()
            oExcelCalc.Application.DisplayAlerts = True
Cont2:
            FormProgress.ProgressBar1.Value = FormProgress.ProgressBar1.Value + 1
        Next
 
        FormProgress.Close()
        oExcelCalc.Application.Quit()
 
        Call CalcSumm() ' Расчет сумм по проекту.
        Call CheckFillTab() ' показ кнопок управления ри сформированной таблице
        Call CheckProjectConditions() 'проверка и отметка цветами не заполненных полей в раздере условий оплаты.
 
    End Sub
0
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
16.12.2018, 20:22 14
Лучший ответ Сообщение было отмечено Allleksey как решение

Решение

Попробуйте добавить после этой строки
VB.NET
1
FormProgress.ProgressBar1.Value = FormProgress.ProgressBar1.Value + 1
Следующее:
VB.NET
1
 Application.DoEvents()
1
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
16.12.2018, 20:27  [ТС] 15
Цитата Сообщение от bbbw Посмотреть сообщение
Application.DoEvents()
Вот это помогло! Спасибо огромное.
0
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
16.12.2018, 20:29 16
Пожалуйста
Просто не забывайте вставлять эту строку в циклы, во время которых происходят другие действия(события).
0
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
16.12.2018, 20:54  [ТС] 17
Может быть итоговое решение кому то пригодится.

Процедура обработки нажатия кнопки
VB.NET
1
2
3
4
5
Public Class FormProgress
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        FormMain.blnClikCancalButton = True
    End Sub
End Class
В начале FormMain объявлена глобальная переменная признака отмены
VB.NET
1
2
Public Class FormMain
    Public blnClikCancalButton As Boolean
В самой процедуре FormMain
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
...
...
           Application.DoEvents()
           If blnClikCancalButton = True Then
                FormProgress.Close()
                Me.DataGridView1.Rows.Clear()
                Call CheckFillTab()
                Me.Button1.Enabled = False
                oExcelCalc.Workbooks.Close()
                GoTo StopSub1
            End If
...
...
...
StopSub1:
End Sub
0
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
16.12.2018, 22:14 18
Allleksey, лучше используйте для этих действий BackgroundWorker.
-выполняет какую-либо операцию асинхронно
-поддерживает завершение операции (CancelAsync)
-имеет событие завершения работы
И не придется городить подобных конструкций с goto
2
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
17.12.2018, 07:55  [ТС] 19
Orlangur1991, мысль интересная, но не сработала. Возможно нужно изменить код (адаптировать под выполнение задачи в фоне).
На форме есть DataGridView1. Процедуру, код которой приводил выше, попытался "загнать" в фоновое выполнение.
VB.NET
1
2
3
Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
...
End Sub
И сразу получил ошибку при выполнении операции добавления строки
VB.NET
1
Me.DataGridView1.Rows.Add()
Текст ошибки:
System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'DataGridView1' не из того потока, в котором он был создан."
0
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
17.12.2018, 10:46 20
Allleksey, любое обращение к элементам формы в этом случае необходимо делать через Invoke, например
VB.NET
1
Invoke(Sub() Me.DataGridView1.Rows.Add())
1
17.12.2018, 10:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2018, 10:46
Помогаю со студенческими работами здесь

Как отследить прекращение нажатия кнопки?
как отследить прекращение нажатия кнопки? вот часть кода, где button_up отслеживает прекращение...

Как отследить момент нажатия кнопки
Сам медик. Хочу усовершенствовать одну методу по исправлению заикания, но знаний по...

Как отследить время нажатия кнопки?
Как сделать так чтобы при нажати на клавишу у меня нажималась кнопка,при отпускании кнопки...

Как из обработчика Form1_KeyPress вызвать событие для нажатия заданной по имени кнопки на форме (кнопки 0-9)
Пишу калькулятор. Есть несколько кнопок (Button) с цифрами и знаками. Для цифр имена кнопок:...

Как программно отследить нажатия на кнопки в Webim, устроенного в CRM?
Всем доброй ночи. На работе Webim встроен в Siebel CRM и все выполняется в браузере. Там есть...

Как обработать событие нажатия кнопки в Canvas
Имеется класс наследник Канваса, в нем обработчики. Однако собтие нажатия клавиши не доходит до...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru