Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2012, 09:57   #1
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию программное создание формы. как закрыть ее потом ?

Добрый день. Задача такова: нужна динамически созданная форма которая при начальной загрузке программы, в то время пока подгружаются данные будет висеть с логотипом. имеется класс в нем есть функция создания формы с логотипом.
вот код создания формы:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Threading;

namespace WindowsFormsApplication6
{
   public class LogoClass
    {
        
       public void NewForm()
        {
            Form LogoForm = new Form();

                LogoForm .BackColor = Color.White;
                LogoForm .AutoScaleMode = AutoScaleMode.Font;
                LogoForm .Size = new Size(600, 300);
                LogoForm .Text = "Процесс загрузки...";
                LogoForm .MinimizeBox = false;
                LogoForm .MaximizeBox = false;
                LogoForm .AutoSize = false;
                LogoForm .Name = "LogoFrm";
                

                PictureBox PicBoxProgressBar = new PictureBox();
                PicBoxProgressBar.Size = new Size(556, 38);
                PicBoxProgressBar.Location = new Point(6, 19);
                PicBoxProgressBar.ImageLocation = "D:\\progressBar.gif";



                PictureBox PicBox = new PictureBox();
                PicBox.Size = new Size(307, 179);
                PicBox.Location = new Point(12, 12);
                PicBox.ImageLocation = "D:\\file_transfer1.jpg";
                PicBox.SizeMode = PictureBoxSizeMode.Zoom;

                Label Text_1 = new Label();
                Text_1.Text = "Выполняется загрузка...";
                Text_1.Font = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point);
                Text_1.Location = new Point(325, 170);
                Text_1.Size = new Size(267, 24);

                GroupBox GroupProgress = new GroupBox();
                GroupProgress.Location = new Point(12, 197);
                GroupProgress.Size = new Size(568, 63);
                GroupProgress.Text = "Копирование";
                GroupProgress.Controls.Add(PicBoxProgressBar);


                LogoForm .Controls.Add(GroupProgress);
                LogoForm .Controls.Add(Text_1);
                LogoForm .Controls.Add(PicBox);
                
                LogoForm .Show();
   
            }
            
        }
       
       }
    }
собственно из программы вызываю ее так
Код:
LogoClass Logo=new LogoClass();
Logo.NewForm();
форма создается и открывается. Как теперь ее закрыть по завершении загрузки(вычислений) ?? пробывал
Код:
Application.OpenForms["LogoFrm"].Close();
так нельзя
wm_leviathan вне форума Ответить с цитированием
Старый 26.07.2012, 10:04   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

У тя другие окна есть?
Dispose() попробуй, но тогда тебе нужно будет вручную поубивать, все что ты там насоздавал на форме.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 26.07.2012 в 10:07.
Utkin вне форума Ответить с цитированием
Старый 26.07.2012, 10:28   #3
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

пробовал но я где то накосячил с потоками поэтому у меня вылазиет ошибка. затея должна выглядеть след образом: есть главный поток программы в нем идут всякие вычисления (sql запросы к таблицам например), некоторые запросы могут длиться секунд 20-30. хочется сделать окно которое говорит пользователю что идет загрузка. так вот в главном потоке я запускаю запрос. попутно хочу создаю в backgrnwork'е форму. она создается но нормально не отрисовывается. (раньше запрос делал в потоке через bgWorker а форму наоборот вызывал в главном потоке программы). теперь еще и добавилась задача нормальной прорисовки (
wm_leviathan вне форума Ответить с цитированием
Старый 26.07.2012, 10:39   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну сделай окно невидимым. Когда не нужно, убьется само.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 26.07.2012, 11:02   #5
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

всем спасибо разобрался с потоками. сделал так:

Код:
Thread t1 = new Thread(LogoClass.NewForm);
            t1.Priority = ThreadPriority.Highest;
            t1.Start();
дальше идут вычисления
t1.Abort();
вроде все работает как надо
wm_leviathan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как закрыть дочерние формы Slicker C# (си шарп) 1 26.03.2012 09:28
Программное создание формы/компонента velldrum Помощь студентам 1 01.06.2011 07:40
Как программно закрыть все открытые модальные формы перед сворачиванием главной формы в трей? SkAndrew Общие вопросы Delphi 8 27.01.2010 22:44
убрать из формы кнопки закрыть... fitc Общие вопросы Delphi 3 22.07.2009 11:17
Программное заполнение формы Clunk Работа с сетью в Delphi 4 02.06.2009 14:02