Заблокирован
1

Плавное закрытие формы (прозрачность по таймеру)

31.05.2012, 12:39. Показов 4802. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Вот столкнулся с проблемой, у меня есть форма,при закрытии которой открывается другая форма, но на ней стоит таймер, по истечении которого она должна закрыться, НО ПОЧЕМУ-ТО Таймер не срабатывает и она сразу же закрывается??
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
if (MessageBox.Show("Закртыть приложение?", "Форма закрытия",
            MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
            {
                e.Cancel = true;
 
            }
            else 
            {
                 //Открываем вторую форму
                e.Cancel = false;
                Form4 frm4 = new Form4();
                frm4.Show();
            }
Вот код на той самой форме где стоит таймер:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   private void Form4_Load(object sender, EventArgs e)
        {
            //Включение таймера
            timer1.Start();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            //Задаем интервал для медленного исчезновения
            timer1.Interval = 3000;
            //Задаем уровень прозрачности формы
            this.Opacity -= .1;
            //Когдапроходит заданное время
            if (this.Opacity <= 0)
            {
                //Таймер останавливается
                timer1.Stop();
                //Форма закрывается
                this.Close();
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2012, 12:39
Ответы с готовыми решениями:

Закрытие формы по таймеру
Есть одна проблема: у меня есть один таймер, который открывает дополнительную форму. После этого...

Показ и закрытие формы по таймеру.
Здравствуйте. Нужно показать форму с логотипом на 3 секунды и потом закрыть. Я что-то не так...

Открытие и закрытие по таймеру
Всем привет! В общем суть такая, сделал программу, которая по таймеру открывает и закрывает сидюк ...

Разрешить закрытие формы при условии, что все другие формы закрыты
Нужно создать событие, при котором приложение не завершается, пока все формы не будут закрыты. ...

6
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
31.05.2012, 17:00 2
aleksnice, не вижу причин не работать, кроме двух нюансов
Таймер с интервалом в 3000, имхо, перебор, сделайте пошустрее, где-то 70-90
Прозрачность можно помягче менять, не .1, а, скажем, .05
0
Футболист
532 / 434 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
31.05.2012, 20:28 3
Попробуй так, работает
Как вариант
C#
1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, EventArgs e)
        {
            do
            {
                Thread.Sleep(59);
                this.Opacity -= 0.01;
            } while (this.Opacity > 0);
            
           Application.Exit();
        }
0
42 / 42 / 7
Регистрация: 23.04.2010
Сообщений: 93
01.06.2012, 00:38 4
Присоединяюсь к Памирыч. Причина в значениях. У вас интервал в 3 секунды (зачем-то каждый раз задается), а уменьшение значения 0.1, разницу можно увидеть если поставить на видео-запись и потом промотать на скорости ))
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
01.06.2012, 10:54 5
Цитата Сообщение от aleksnice Посмотреть сообщение
НО ПОЧЕМУ-ТО Таймер не срабатывает и она сразу же закрывается??
Закрывается, т.к. закрывается главная форма приложения, т.е. закрывается вся программа. Форму нужно прятать, а не закрывать. Модифицируй так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        bool needClosed = false;
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (needClosed)
                e.Cancel = false;
            else
            {
                e.Cancel = true;
                Hide();
                Form4 frm4 = new Form4();
                frm4.FormClosed += new FormClosedEventHandler(frm4_FormClosed);
                frm4.Show();
            }
        }
        void frm4_FormClosed(object sender, FormClosedEventArgs e)
        {
            needClosed= true;
            Close();
        }
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
02.03.2013, 17:07 6
Скажите пожалуйста, почему этот таймер работает
C#
1
2
3
4
5
6
7
8
Timer timer1 = new Timer();
            timer1.Tick += new EventHandler((sender1, e1) =>
            {
                if ((Opacity += 0.05d) == 1)
                    timer1.Stop();
            });
            timer1.Interval = 1;
            timer1.Start();
а этот нет
C#
1
2
3
4
5
6
7
8
Timer timer2 = new Timer();
            timer2.Tick -= new EventHandler((sender2, e2) =>
            {
                if ((Opacity -= 0.05d) == 0)
                    timer2.Stop();
            });
            timer2.Interval = 1;
            timer2.Start();
???
0
Футболист
532 / 434 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
02.03.2013, 20:11 7
подписал на событие
C#
1
2
3
4
5
 timer1.Tick += new EventHandler((sender1, e1) =>
            {
                if ((Opacity += 0.05d) == 1)
                    timer1.Stop();
            });

отписал от события
C#
1
2
3
4
5
timer2.Tick -= new EventHandler((sender2, e2) =>
            {
                if ((Opacity -= 0.05d) == 0)
                    timer2.Stop();
            });
вся соль в -=
0
02.03.2013, 20:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2013, 20:11
Помогаю со студенческими работами здесь

Как отловить закрытие формы по нажатию на крестик в правом верхнем углу формы
Обычный обработчик не катит: нужно закрыть форму в процессе работы программы

Закрытие формы по таймеру
Кто подскажет код после открытия формы Sub Кнопка1_Щелкнуть() UserForm1.Show End Subзадать...

Не работает плавное закрытие формы
Добрый вечер, подскажите в чём проблема? Private Sub Timer2_Tick(sender As Object, e As...

Плавное появление и закрытие формы в делфи
написал код на плавное появление и закрытие формы но почему-то не работает. в чем может быть...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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