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

Во время цикла Label не показывает значения

27.10.2010, 14:23. Показов 1908. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Тут возникла проблема. Вот код:

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
Private Sub SendMail_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
        Dim countcount As Integer
        Dim NumCol As Integer
        Dim countBar As Integer
        Dim arrayMail(,) As String
        Dim X As Integer = 30
 
        On Error GoTo sixError
        Dir.Enabled = False
 
 
        resMail = MsgBox("Начать рассылку?", MsgBoxStyle.YesNo)
 
        If resMail = 6 Then
 
            [B]LabelText.Text = "Идет сбор данных для рассылки."[/B]
            
            dbDivm.Open("Provider=SQLOLEDB.1; Server=192.168.0.123\sqlexpress; Database=xxxx;User ID=xxx;Password=xxxx;Trusted_Connection=False;")
            rstDivm.Open("SELECT ID_Firm, Flag, SUM(Summa) FROM Six GROUP BY ID_Firm, Flag ORDER BY Flag ;", dbDivm, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockReadOnly)
 
            If (rstDivm.EOF Or rstDivm.BOF) Then
                rstDivm.Close()
                dbDivm.Close()
            Else
                rstDivm.MoveFirst()
                countcount = 0
                countBar = 0
 
 
                 Do While Not (rstDivm.EOF Or rstDivm.BOF)
                    If rstDivm.Fields("Flag").Value = False Then
                        countcount = countcount + 1
                    End If
                    countBar = countBar + 1
                    rstDivm.MoveNext()
                Loop
 
                ProgressBar.Visible = True
                ProgressBar.Maximum = countBar
                rstDivm.MoveFirst()
                ReDim arrayMail(countcount - 1, 3)
                countcount = 0
 
                Do While Not (rstDivm.EOF Or rstDivm.BOF)
                    If rstDivm.Fields("Flag").Value = False Then
                        arrayMail(countcount, 0) = rstDivm.Fields("ID_Firm").Value
                        arrayMail(countcount, 1) = rstDivm.Fields(2).Value
                    Else
                        For i = 0 To UBound(arrayMail)
                            If arrayMail(i, 0) = rstDivm.Fields("ID_Firm").Value Then
                                arrayMail(i, 1) = CInt(arrayMail(i, 1)) - CInt(rstDivm.Fields(2).Value)
                            End If
                        Next
                    End If
 
 
                    countcount = countcount + 1
                    ProgressBar.Value = countcount
                    rstDivm.MoveNext()
                Loop
 
                ProgressBar.Visible = False
                rstDivm.Close()
                dbDivm.Close()
 
            End If
 
            ProgressBar.Visible = True
            ProgressBar.Maximum = UBound(arrayMail)
 
            For i = 0 To UBound(arrayMail)
 
                dbDivm.Open("Provider=SQLOLEDB.1; Server=192.168.0.123\sqlexpress; Database=xxx sql;User ID=xx;Password=xxxxx;Trusted_Connection=False;")
                rstDivm.Open("SELECT ID, Klient, Email FROM Klienti WHERE ID='" & arrayMail(i, 0) & "';", dbDivm, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockReadOnly)
 
                If (rstDivm.EOF Or rstDivm.BOF) Then
                    rstDivm.Close()
                    dbDivm.Close()
                Else
                    rstDivm.MoveFirst()
                    arrayMail(i, 0) = rstDivm.Fields("Klient").Value
                    arrayMail(i, 2) = rstDivm.Fields("Email").Value
                    rstDivm.Close()
                    dbDivm.Close()
                End If
 
                ProgressBar.Value = i
 
            Next
 
            TextBoxMail.Visible = True
 
            ProgressBar.Maximum = UBound(arrayMail)
 
            For i = 0 To UBound(arrayMail)
                TextBoxMail.Text = TextBoxMail.Text & "'" & arrayMail(i, 0) & "' (" & arrayMail(i, 1) & ") eMail: " & arrayMail(i, 2) & vbCrLf
                ProgressBar.Value = i
                [B]LabelBar.Text = i & "/" & UBound(arrayMail)[/B]
 
 
            Next
 
            ProgressBar.Visible = False
 
            resMail = MsgBox("Операция завершена!" & vbCrLf & "Распечатать отчет?", MsgBoxStyle.YesNo)
 
 
            If resMail = 6 Then
                Dir.Enabled = True
                Me.Close()
            Else
                Dir.Enabled = True
                Me.Close()
            End If
        End If
 
 
        Exit Sub
Проблема в том, что выделенные Label не изменяются визуально в форме в процессе работы цикла. Сам TextBox тож не меняется построчно. Все визуальные изменения происходят когда отработает цикл вывода в TextBox. Как добиться "онлайн" изменения ? ПрогрессБар замечательно работает.
Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2010, 14:23
Ответы с готовыми решениями:

Изменение значения Label во время исполнения программы
В поле edit ввожу строку, как реализовать подсчет длины строки в поле Label во время ввода(т.е....

Нужно сделать сохранение значения label в файл и обратную загрузку значений в label
Нужно сделать так, чтобы при нажатии на кнопку "Сохранить", мои 5 надписей на странице были...

Label не показывает текст и ProgressBar не отображается
Label2.Caption := 'Поиск файлов'; // Текст над прогрессбаром //Sleep(1000); // Это пробовал, не...

При повторном счете цикла, не запоминается значения предыдущего цикла
Не могу разобраться в чем проблема. При повторном счете цикла, не запоминается значения...

2
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,223
31.10.2010, 08:44 2
Вопрос лучше задать в NET разделе.
0
0 / 0 / 1
Регистрация: 24.10.2010
Сообщений: 5
31.10.2010, 22:19  [ТС] 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Всем привет ... сам допетрил как зделать. Me.Refresh() добавить и все прекрасно стало отображаться ))
0
31.10.2010, 22:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2010, 22:19
Помогаю со студенческими работами здесь

Тело какого из перечисленных операторов цикла выполняется как минимум один раз, независимо от значения параметра цикла
Оператор цикла, тело которого выполняется как минимум один раз независимо от значения параметра...

Обновление Label из цикла
Есть цикл загрузки данных в методе downloadToClass: private void...

Вывод из цикла for в label
Доброго времени суток. Есть консолевский код, который в результате выводит календарь на указанный...

DateTimePicker не показывает время
Кидаю на форму контрол, в коде задаю ему значение DTP.Value = DateTime Дату отображает то, что...


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

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