Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> медленно работает форма, медленная загрузка и удаление элементов 
:(
    Опции темы
6axyc
Дата 24.10.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



всем драсте, вобщем у меня такая проблема, у меня есть панель по среди формы на которой появляются картинки, тобишь я могу туда добавлять и удалять картинки.
когда я удаляю картинки то я стираю все и потом заново "появляю" все картинки, кроме удаленны.
да вот процесс када картинки стираются он происходит секунды 2 (что это очень долго) плюс сопроваждается миганиями, что очень плохо выглядит. ну и в общем форма сама долго загружается, можноли сделать канить чтобы форма загружалась, и только када уже загруженна, появлялась в момент и без миганий? посиба. 
а и еще, код для убирания картинок

Код

panel1.Controls.Clear();


но исчезновение не происходит мгновенно.

Это сообщение отредактировал(а) 6axyc - 24.10.2009, 19:50
PM MAIL   Вверх
nmn
Дата 25.10.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(6axyc @ 24.10.2009,  19:32)
всем драсте, вобщем у меня такая проблема, у меня есть панель по среди формы на которой появляются картинки, тобишь я могу туда добавлять и удалять картинки.
когда я удаляю картинки то я стираю все и потом заново "появляю" все картинки, кроме удаленны.
да вот процесс када картинки стираются он происходит секунды 2 (что это очень долго) плюс сопроваждается миганиями, что очень плохо выглядит. ну и в общем форма сама долго загружается, можноли сделать канить чтобы форма загружалась, и только када уже загруженна, появлялась в момент и без миганий? посиба. 
а и еще, код для убирания картинок

Код

panel1.Controls.Clear();


но исчезновение не происходит мгновенно.

ничего не понятно
PM Skype   Вверх
6axyc
Дата 30.10.2009, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



сорри если намутил в объяснении, в общем проблема такова, у меня есть панель на которой есть пикчербоксы, дак вот когда я програмно удаляю один из пикчербоксов то я какбы убираю все, и загружаю их обратно, но без удаленного, дак вот и проблема что это происходит очень медленно и сопровождается мерцаниями, ктонить может дать совет по убиранию мерцаний и увеличеванию скорости при загрузке пикчербоксов?
надеюсь ща нормально объяснился
PM MAIL   Вверх
nmn
Дата 30.10.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(6axyc @  30.10.2009,  11:40 Найти цитируемый пост)
какбы убираю все, и загружаю их обратно, но без удаленного

вот тут поподробнее
PM Skype   Вверх
6axyc
Дата 30.10.2009, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



ну в общем так
каждому пикчербоксу соответствует чекбокс, я ставлю галочки и нажимаю на кнопку удалить
cheked это массив имен(id) выбранных элементов

все элементы сохранены в XML документе.


Код

private void delete_pic_Click(object sender, EventArgs e)
        {
            XmlDocument delete = new XmlDocument();
            delete.Load(allp);
            if (cheked.Items.Count > 0)
            {
                try
                {
                    for (int i = 0; i < cheked.Items.Count; i++)
                    {

                        XmlNode dt = delete.SelectSingleNode("/all_pics/picture[@id='" + cheked.Items[i] + "']");
                        if (dt != null)
                        {
                            dt.ParentNode.RemoveChild(dt);
                            delete.Save(allp);
                        }

                    }

                    x = 10;
                    y = 20;
                    delete.Save(allp);
                    cheked.Items.Clear();
                    panel1.Controls.Clear();
                    //InitializeComponent();
                    
                }
                catch (Exception d)
                {
                    cheked.Items.Clear();
                    MessageBox.Show(d.ToString());
                }

                refres();
            }
        }


функция refres(); выглядит так

Код

public void refres()
        {
            x = 10;
            y = 20;
            XmlTextReader load_pic = new XmlTextReader(allp);
            string chek_name = "";
            while (load_pic.Read())
            {

                XmlNodeType ntype = load_pic.NodeType;
                if (ntype == XmlNodeType.Element)
                    if (load_pic.Name.ToString() == "name")
                        chek_name = load_pic.ReadString();

                if (load_pic.Name.ToString() == "link")
                {

                    PictureBox ad = new PictureBox();
                    ad.Height = 115;
                    ad.Width = 115;
                    ad.Location = new Point(x, y);
                    ad.SizeMode = PictureBoxSizeMode.Zoom;
                    ad.BackColor = Color.Transparent;
                    ad.Visible = true;
                    //ad.Name = name.ToString();
                    ad.Image = Image.FromFile(load_pic.ReadString());
                    panel1.Controls.Add(ad);

                    ad.Click += new System.EventHandler(ad_m);
                    ad.MouseDown += new MouseEventHandler(ad_MouseDown);
                    ad.MouseEnter += new EventHandler(ad_MouseEnter);
                    ad.Name = chek_name;
                    CheckBox chek = new CheckBox();
                    chek.Location = new Point(x + 40, y + 120);
                    chek.Size = new Size(20, 20);
                    chek.Name = chek_name;
                    chek.BackColor = Color.Transparent;
                    chek.CheckedChanged += new System.EventHandler(selectlist);
                    panel1.Controls.Add(chek);
                    chek.Visible = true;

                    if (panel1.Width > (x + 250))
                    {
                        x += 125;
                        y = y;
                    }

                    else //(panel1.Width <= (x + 145))
                    {
                        x = 10;
                        y += 150;
                    }
                }

            }
            load_pic.Close();
        }


x,y - это координаты пикчербоксов

и вот это дело убирает мне пикчер боксы с такой скоростью, что я вижу как раза 3 мигнет один и изчезнит, потом второй и изчезнит, и так пока все не изчезнут, ну и это еще и сопровождается миганием всей панели.
есть идеи?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.