powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ProgressBar
10 сообщений из 10, страница 1 из 1
ProgressBar
    #38129705
maximIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Есть главная форма frmMain, есть компонент frmProgressBarControl и форма frmProgressBar куда вставлен контрол

На главной форме рисуем кнопку которая запускает

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
            Dim maxValue As Integer = 1000000
            Dim progress As frmProgress = New frmProgress(maxValue)

            progress.Show(Me)

            For i As Integer = 1 To maxValue
                progress.FrmProgressControl.PerformStep(i)
            Next



вот код контрола
Код: vbnet
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.
Public Class frmProgressControl

    Public Sub New()

        InitializeComponent()

    End Sub

    Property MaximumValue() As Integer
        Get
            Return Me.ProgressBarControl.Properties.Maximum
        End Get
        Set(ByVal Value As Integer)
            Me.ProgressBarControl.Properties.Maximum = Value
        End Set
    End Property

    Property StepValue() As Integer
        Get
            Return Me.ProgressBarControl.Properties.Step
        End Get
        Set(ByVal Value As Integer)
            Me.ProgressBarControl.Properties.Step = Value
        End Set
    End Property

    Public Sub PerformStep(LabelValue As String)
        Me.Label.Text = LabelValue
        Me.ProgressBarControl.PerformStep()

        Me.ProgressBarControl.Update()
        Me.Label.Update()
    End Sub
End Class



проблема в том что, когда запускается прогресс и если перейти в другое окно, браузер, Word и т.д., то пока цикл не закончит работать фокус ни на главную форму ни на прогресс не получить.
Даже если сделать отдельным потоком, все равно максимум чего добьемся - возможность перейти на главную форму а на прогресс уже не перейти, хотя бы для того чтобы увидеть сколько осталось.

Как сделать прогресс видимым?
...
Рейтинг: 0 / 0
ProgressBar
    #38130020
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maximIZ,
Application.DoEvents() пробовали (после progress.FrmProgressControl.PerformStep(i))?
...
Рейтинг: 0 / 0
ProgressBar
    #38130432
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser,

нет и еще раз нет!
Код: c#
1.
BackgroundWorker

. Таких уже тут тем 10 точно было...
...
Рейтинг: 0 / 0
ProgressBar
    #38130570
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanLameUser,

нет и еще раз нет!
Код: c#
1.
BackgroundWorker

. Таких уже тут тем 10 точно было...

Стоит ли овчинка выделенки?
Как понимаю товарищ просто хочет посмотреть процесс его цикла.
Тут же ему уже нужно будет почитать про потоки :)

В свое время временами я отказывался от backgroundworker'a в виду его дубовости и использовал родной Thread.
...
Рейтинг: 0 / 0
ProgressBar
    #38130688
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser,

ну можно и Thread, в случае с BW про потоки знать не обязательно. с другой стороны лишних знаний не бывает.
...
Рейтинг: 0 / 0
ProgressBar
    #38131165
maximIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даже если я воспользуюсь BackgroundWorker то не получить фокуса на форму с прогрессом. и даже не увидеть что происходит на ней. единственный выход Application.DoEvents() ?
...
Рейтинг: 0 / 0
ProgressBar
    #38131178
вопросец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор в соседней теме почитайте
...
Рейтинг: 0 / 0
ProgressBar
    #38131662
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maximIZдаже если я воспользуюсь BackgroundWorker то не получить фокуса на форму с прогрессом. и даже не увидеть что происходит на ней. единственный выход Application.DoEvents() ?

ShowDialog() формы с прогресс баром вместо Show() не пробовали (в случае запуска отдельного потока на цикл)?
...
Рейтинг: 0 / 0
ProgressBar
    #38131983
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maximIZ,

не понимаю что вы сделать -то хотите? Обычно так - нажимаете кноку на форме, на ней же progressbar. Сама логика выполняется в БГ потоке, а он передает через метод что-то там оповестить данные на прогрессбар.
...
Рейтинг: 0 / 0
ProgressBar
    #38132183
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maximIZ, берём готовое решение, например: A .NET Progress Dialog , - и делаем по аналогии.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ProgressBar
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]