Форум программистов, компьютерный форум, киберфорум
444
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 2.

Правильная реализация плавных переходов по формам

Запись от 444 размещена 22.06.2020 в 12:30

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
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();            
        }
 
        private void button1_Click(object sender, EventArgs e)
        {                     
            System.Media.SoundPlayer Simple = new System.Media.SoundPlayer(WindowsFormsApp2.Properties.Resources.Clik);//Самое главное не использовать Методы или любые другие ссылки из родительской формы 
            Simple.Play();     //Т.К. при переключении будет создаваться новый экземпляр Родительской формы. Создайте клас для испольования методов во всех формах.
 
            for (int i = 100; i >= 0; i--)            //                        
            {                                         //Цикл для плавного
                Opacity = i / 100.0;                  //Скрытия активной формы
                System.Threading.Thread.Sleep(1);     //Чем больше значение Sleep() тем быстрее исчезает форма
            }                                         //
 
            ActiveForm.Hide();                    //Закрывает активную форму в данный момент
            Form2 f = new Form2(this);                    //Отображает форму при помощи ссылки на параметр и параметр класса
            Opacity = 0;                         //Сборка мусора для дочерней формы. Т.К. дочерняя форма создается по новой, в отличи от Родительской.
 
            f.Show();                          //
            for (int i = 0; i <= 100; i++)         //Цикл для плавного 
            {                                      //
                Opacity = i / 100.0;    //Открытия открываймой формы
                System.Threading.Thread.Sleep(1);  //Чем больше значение Sleep() тем медленнее появляется форма
            }
        }
    }









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
 public partial class Form2 : Form
    {
        private readonly Form formtoopen; //Создание модификатора 
        
        public Form2(Form1 form)
        {            
            InitializeComponent();
            formtoopen = form;
            GC.Collect();
        }
 
 
        private void button1_Click_1(object sender, EventArgs e)
        {
            System.Media.SoundPlayer Simple = new System.Media.SoundPlayer(WindowsFormsApp2.Properties.Resources.Clik);//Самое главное не использовать Методы или любые другие ссылки из родительской формы 
            Simple.Play();     //Т.К. при переключении будет создаваться новый экземпляр Родительской формы. Создайте клас для испольования методов во всех формах.
 
            for (int i = 100; i >= 0; i--)            //                        
            {                                         //Цикл для плавного
                Opacity = i / 100.0;                  //Скрытия активной формы
                System.Threading.Thread.Sleep(1);     //
            }                                         //
 
            ActiveForm.Close();                    //Закрывает активную форму в данный момент
            formtoopen.Show();                     //Отображает форму при помощи ссылки на параметр и параметр класса
            GC.Collect();                          //Сборка мусора для дочерней формы. Т.К. дочерняя форма создается по новой, в отличи от Родительской.
 
            Opacity = 0;                           //
            for (int i = 0; i <= 100; i++)         //Цикл для плавного 
            {                                      //
                formtoopen.Opacity = i / 100.0;    //Открытия открываймой формы
                System.Threading.Thread.Sleep(1);  //
            }
        }
    }


В дизайнере ничего не изменялось и не редактировалось так же как и в главной точке входа (Program.cs)
Если у вас есть метод лучше или модификация моего метода, то пожалуйста прокомментируйте запись. Я буду рад посмотреть на него, ибо я новичок в программировании


PS. Я уже понял что можно просто скрывать форму Opacity через таймер, я попозже попытаюсь это реализовать.
Не обязательно дублировать это предложение( ͡° ͜ʖ ͡°)Спасибо тем людям которые подали идею))
Размещено в Без категории
Просмотров 241 Комментарии 4
Всего комментариев 4
Комментарии
  1. Старый комментарий
    Аватар для Croessmah
    Как по мне, то это плохо - тормозить поток при клике на кнопку.
    Сделайте таймер и по его срабатыванию меняйте Opacity.
    Запись от Croessmah размещена 22.06.2020 в 20:07 Croessmah вне форума
  2. Старый комментарий
    Цитата:
    Сообщение от Croessmah Просмотреть комментарий
    Как по мне, то это плохо - тормозить поток при клике на кнопку.
    Сделайте таймер и по его срабатыванию меняйте Opacity.
    Можете пример скинуть?если не сложно. Я потесщу и отредачу статью)))
    Заранее спасибо
    PS. Я кажется догнал что вы имели ввиду....Но я хотел бы еще в лс пару вопросов задать)))
    Запись от 444 размещена 23.06.2020 в 14:56 444 вне форума
  3. Старый комментарий
    Аватар для Avazart
    В общем да, это треш. Почему не использовать таймер вместо потоков?
    Запись от Avazart размещена 23.06.2020 в 16:46 Avazart на форуме
    Обновил(-а) 444 24.06.2020 в 08:08 (Запятую пропустил)
  4. Старый комментарий
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    В общем да, это треш. Почему не использовать таймер вместо потоков?

    По заданию нужно было с потоками работать. Я просто поделился тем, как это сделал я.
    Конечно можно и таймером, но я еще рукопоп))))Самое главное шо озу не кушает как не в себя.
    Запись от 444 размещена 24.06.2020 в 08:11 444 вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.