powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Работа с формой заставкой (splash form)
13 сообщений из 13, страница 1 из 1
Работа с формой заставкой (splash form)
    #39770671
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хочу показать заставку, подготовить данные и убрать заставку.
Код: c#
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.
 private void PleaseWaitFormControl(bool show)
 {
    if (show)
     {
           if (logPWF == null)
           {
               logPWF = new PleaseWaitForm();
               logPWF.ShowDialog();
           }
     }
     else
      {
            if (ogPWF != null)
            {
                  logPWF.Close();  
                  logPWF.Dispose
            }
     }
 }

void Test()
{
     PleaseWaitFormControl(true);
     //do something
     PleaseWaitFormControl(false);
}



но после logPWF = new PleaseWaitForm(); код не продолжается и заставка крутиться вечно.

пробовал запускать в отдельном потоке
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
private void PleaseWaitFormControl(bool show)
{
            if (show)
            {
                tLogPleaseWaitForm = new System.Threading.Thread(new System.Threading.ThreadStart(showPleaseWaitForm));
                tLogPleaseWaitForm.Start();
            }
            else
            {
                 tLogPleaseWaitForm.Abort();
            }
}

        private void showPleaseWaitForm()
        {
            logPWF = new PleaseWaitForm();
            logPWF.ShowDialog();
        }


но на tLogPleaseWaitForm.Abort(); вылетаю в исключение.
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770691
Syrex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставь просто Show()
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770698
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SyrexПоставь просто Show()
даю так работает. но один раз. на второй - cannot access disposed object - хотя я закрыл logPWF.Dispose().
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770711
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
void Test()  //on button click
{
     logPWF.Show();
     //do something
    logPWF.Close();
}


так работает но один раз. на второй раз исключение.
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770715
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
Код: c#
1.
2.
3.
4.
5.
6.
void Test()  //on button click
{
     logPWF.Show();
     //do something
    logPWF.Close();
}


так работает но один раз. на второй раз исключение.
когда окно закрывается оно высвобождает занимаемые неуправляемые ресурсы
создайте новое окно
var form = new PleaseWaitForm();
form.Show();
...
form.Close();
и когда нужно открыть окно снова, создайте его еще раз.
Если окно нужно постоянно одно и тоже , используйте .Hide()
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770720
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesjenya7
Код: c#
1.
2.
3.
4.
5.
6.
void Test()  //on button click
{
     logPWF.Show();
     //do something
    logPWF.Close();
}


так работает но один раз. на второй раз исключение.
когда окно закрывается оно высвобождает занимаемые неуправляемые ресурсы
создайте новое окно
var form = new PleaseWaitForm();
form.Show();
...
form.Close();
и когда нужно открыть окно снова, создайте его еще раз.
Если окно нужно постоянно одно и тоже , используйте .Hide()
проблема в том что создается PleaseWaitForm в одном методе а закрывается в другом. Поэтому форма должна быть глобальной (?)
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770723
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7SyrexПоставь просто Show()
даю так работает. но один раз. на второй - cannot access disposed object - хотя я закрыл logPWF.Dispose().не закрыват, а скрыть hide.
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770728
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123jenya7пропущено...

даю так работает. но один раз. на второй - cannot access disposed object - хотя я закрыл logPWF.Dispose().не закрыват, а скрыть hide.
если скрыть ресурс останется не освобожденный.
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770735
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал так
Код: c#
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.
private void SplashForm(Form frm, bool show)
        {
            if (show)
            {
                if (frm != null)
                {
                    frm.StartPosition = FormStartPosition.Manual;
                   frm.Left = this.Width / 2;
                   frm.Top = this.Height / 2;

                    frm.Show();
                   frm.BringToFront();
                }
            }
            else
            {
                if (frm != null)
                {
                    frm.Close();
                }
            }
        }


 private void button1_Click(object sender, EventArgs e)
        {
            if (form1  != null) 
                 form1 .Close();

            form1 = new Form1();
            SplashForm(form1, true);

        }

 private void button2_Click(object sender, EventArgs e)
        {
            SplashForm(form1, false);
        }


вроде работает.
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770738
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7не освобожденныйесли один на все то не страшно.
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770739
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может защититься если открытие и закрытие будет происходить из разных потоков?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
private void button1_Click(object sender, EventArgs e)
        {
           if (form1 != null)
                form1.Close();

            form1 = new Form1();

            this.Invoke(
             (MethodInvoker)delegate
              {
                     SplashForm(form1, true); ;
               });   
        }

 private void button2_Click(object sender, EventArgs e)
        {
            this.Invoke(
             (MethodInvoker)delegate
             {
                  SplashForm(form1, false); ;
             });
        }
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770742
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рабочий пример:
Код: c#
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.
_formImportProgress = new FormLoader
{
    ShowProgress = true,
    ProgressMessage = "Идет импорт данных",
    AllowBreakProccess = true
};
var backgroundWorker = new BackgroundWorker {WorkerSupportsCancellation = true};
backgroundWorker.DoWork += (o, args) =>
{
    // загрузка данных
};
backgroundWorker.RunWorkerCompleted += (o, args) =>
{    
    _formImportProgress.Close();
};
backgroundWorker.ProgressChanged += (o, args) =>
{
    _formImportProgress.CurrentProgress = args.ProgressPercentage;
};
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.RunWorkerAsync();
_formImportProgress.OnBreakProccess += () =>
{
    backgroundWorker.CancelAsync();
};
_formImportProgress.ShowDialog(this);
...
Рейтинг: 0 / 0
Работа с формой заставкой (splash form)
    #39770745
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Супер_Пав,
спасибо. как раз думал о BackgroundWorker. я его везде сую хотя не рекомендуют. :)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Работа с формой заставкой (splash form)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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