Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для AlmazSeo
3 / 3 / 0
Регистрация: 24.10.2011
Сообщений: 103

Рандомно вывести одну из форм через определенное время

01.12.2012, 12:11. Показов 3517. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, пишу приложение, и мне необходимо, чтобы через 5 минут на экране выскакивала одна из 10 форм. Как можно сделать подобное?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2012, 12:11
Ответы с готовыми решениями:

Запуск форм в определенное время
Добрые люди помогите, программа состоит из шести форм, первая форма всегда запущена,а как подходит определенное время на компе открыватся...

Задача на структуры. Вывести время через одну секунду
Дано время t. Определить какое будет время через одну секунду. Первая строка входного файла содержит описание времени t в формате...

Вывести определенное число в определенное время
Привет! Подскажите пожалуйста по реализации такой задачи Вывести на страницу определенное число в определенное время Например с 9-00...

21
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
01.12.2012, 12:19
AlmazSeo, указатели на формы загоняешь в массив, ну и при необходимости классом Random получаешь нужный индекс
0
 Аватар для AlmazSeo
3 / 3 / 0
Регистрация: 24.10.2011
Сообщений: 103
02.12.2012, 11:49  [ТС]
На примере может кто продемонстрировать? Просто я новичок...
0
 Аватар для Doomer3D
180 / 180 / 32
Регистрация: 23.11.2012
Сообщений: 344
Записей в блоге: 1
02.12.2012, 12:28
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Type[] forms = new Type[10];
 
forms[0] = typeof(Form1);
forms[1] = typeof(Form2);
forms[2] = typeof(Form3);
forms[3] = typeof(Form4);
forms[4] = typeof(Form5);
forms[5] = typeof(Form6);
forms[6] = typeof(Form7);
forms[7] = typeof(Form8);
forms[8] = typeof(Form9);
forms[9] = typeof(Form10);
 
Form frm = (Form)forms[new Random().Next(10)].InvokeMember(null, System.Reflection.BindingFlags.CreateInstance | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public, null, null, null);
 
// показать форму через Show() или ShowDialog()
frm.ShowDialog();
Это через рефлексию. Form1-10 - это ТИПЫ форм.
1
 Аватар для AlmazSeo
3 / 3 / 0
Регистрация: 24.10.2011
Сообщений: 103
02.12.2012, 12:36  [ТС]
Цитата Сообщение от Doomer3D Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Type[] forms = new Type[10];
 
forms[0] = typeof(Form1);
forms[1] = typeof(Form2);
forms[2] = typeof(Form3);
forms[3] = typeof(Form4);
forms[4] = typeof(Form5);
forms[5] = typeof(Form6);
forms[6] = typeof(Form7);
forms[7] = typeof(Form8);
forms[8] = typeof(Form9);
forms[9] = typeof(Form10);
 
Form frm = (Form)forms[new Random().Next(10)].InvokeMember(null, System.Reflection.BindingFlags.CreateInstance | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public, null, null, null);
 
// показать форму через Show() или ShowDialog()
frm.ShowDialog();
Это через рефлексию. Form1-10 - это ТИПЫ форм.
А как задать время? и чтобы при открытии главной программы пошел отсчет, и после 5 минут открывалась рандомная форма?
0
22 / 22 / 0
Регистрация: 30.11.2012
Сообщений: 54
02.12.2012, 12:38
Так попробуй
Вложения
Тип файла: rar RandForm.rar (56.6 Кб, 23 просмотров)
0
 Аватар для AlmazSeo
3 / 3 / 0
Регистрация: 24.10.2011
Сообщений: 103
02.12.2012, 12:42  [ТС]
Цитата Сообщение от kashirin Посмотреть сообщение
Так попробуй
Отлично, спасибо огромное.
0
22 / 22 / 0
Регистрация: 30.11.2012
Сообщений: 54
02.12.2012, 12:43
Цитата Сообщение от AlmazSeo Посмотреть сообщение
Отлично, спасибо огромное.
Не за что
0
 Аватар для AlmazSeo
3 / 3 / 0
Регистрация: 24.10.2011
Сообщений: 103
02.12.2012, 12:48  [ТС]
Цитата Сообщение от kashirin Посмотреть сообщение
Не за что
А реализовать как-то можно в цикле? чтобы через КАЖДЫЕ n минут выключалось? А то оно 1 раз только появляется и все)
0
22 / 22 / 0
Регистрация: 30.11.2012
Сообщений: 54
02.12.2012, 12:58
Цитата Сообщение от AlmazSeo Посмотреть сообщение
А реализовать как-то можно в цикле? чтобы через КАЖДЫЕ n минут выключалось? А то оно 1 раз только появляется и все)
Только если закрыть одно из открывшихся окон будет ошибка, т.к. нельзя будет обратиться к уничтоженной форме. Там можешь придумать как это обработать
0
22 / 22 / 0
Регистрация: 30.11.2012
Сообщений: 54
02.12.2012, 12:59
Цитата Сообщение от kashirin Посмотреть сообщение
Только если закрыть одно из открывшихся окон будет ошибка, т.к. нельзя будет обратиться к уничтоженной форме. Там можешь придумать как это обработать
Сорри забыл залить
Вложения
Тип файла: rar WpfMvvmApplication1.rar (60.2 Кб, 9 просмотров)
0
 Аватар для Doomer3D
180 / 180 / 32
Регистрация: 23.11.2012
Сообщений: 344
Записей в блоге: 1
02.12.2012, 12:59
C#
1
2
3
4
5
6
        void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            var rnd = new Random();
            FormList[rnd.Next(FormList.Count)].Show();
            bw.RunWorkerAsync();
        }
0
22 / 22 / 0
Регистрация: 30.11.2012
Сообщений: 54
02.12.2012, 13:00
Во, так лучше!!!
0
 Аватар для AlmazSeo
3 / 3 / 0
Регистрация: 24.10.2011
Сообщений: 103
02.12.2012, 13:15  [ТС]
Вызывает ошибку: http://f2.s.qip.ru/uX0nxROA.png
0
 Аватар для Doomer3D
180 / 180 / 32
Регистрация: 23.11.2012
Сообщений: 344
Записей в блоге: 1
02.12.2012, 13:23
Потому что формы создаются заранее. Надо создавать из через рефлексию, как это предлагал я.

Добавлено через 3 минуты
C#
1
private List<Form> FormList = new List<Form>();
Заменить на

C#
1
private List<Type> FormList = new List<Type>();
C#
1
2
3
4
            FormList.Add(new Form1());
            FormList.Add(new Form2());
            FormList.Add(new Form3());
            FormList.Add(new Form4());
Заменить на

C#
1
2
3
4
            FormList.Add(typeof(Form1));
            FormList.Add(typeof(Form2));
            FormList.Add(typeof(Form3));
            FormList.Add(typeof(Form4));
C#
1
FormList[rnd.Next(FormList.Count)].Show();
Заменить на

C#
1
((Form)FormList[new Random().Next(FormList.Count)].InvokeMember(null, System.Reflection.BindingFlags.CreateInstance | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public, null, null, null)).Show();
1
22 / 22 / 0
Регистрация: 30.11.2012
Сообщений: 54
02.12.2012, 16:01
Все правильно! Замени все как сказал Doomer3D и будет работать
1
 Аватар для AlmazSeo
3 / 3 / 0
Регистрация: 24.10.2011
Сообщений: 103
02.12.2012, 16:17  [ТС]
Doomer3D, А почему ошибку выдает? =( http://f4.s.qip.ru/uX0nxROE.png
0
22 / 22 / 0
Регистрация: 30.11.2012
Сообщений: 54
02.12.2012, 16:46
Цитата Сообщение от AlmazSeo Посмотреть сообщение
Doomer3D, А почему ошибку выдает? =( http://f4.s.qip.ru/uX0nxROE.png
В bw_DoWork оставляй Sleep:
C#
1
2
3
4
5
        void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            // Тут ставим время скока ждать (вместо 5000 ставим свое)
            Thread.Sleep(5000);
        }
В bw_RunWorkerCompleted вставляй
C#
1
2
3
4
5
6
7
       
 void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            var rnd = new Random();
            FormList[rnd.Next(FormList.Count)].Show();
            bw.RunWorkerAsync();
        }
как писал Doomer3D. Далее смотри пост Doomer3D, где он говорит где чего заменить, т.е. вот этот:
Цитата Сообщение от Doomer3D Посмотреть сообщение
Потому что формы создаются заранее. Надо создавать из через рефлексию, как это предлагал я.

Добавлено через 3 минуты
C#
1
private List<Form> FormList = new List<Form>();
Заменить на

C#
1
private List<Type> FormList = new List<Type>();
C#
1
2
3
4
            FormList.Add(new Form1());
            FormList.Add(new Form2());
            FormList.Add(new Form3());
            FormList.Add(new Form4());
Заменить на

C#
1
2
3
4
            FormList.Add(typeof(Form1));
            FormList.Add(typeof(Form2));
            FormList.Add(typeof(Form3));
            FormList.Add(typeof(Form4));
C#
1
FormList[rnd.Next(FormList.Count)].Show();
Заменить на

C#
1
((Form)FormList[new Random().Next(FormList.Count)].InvokeMember(null, System.Reflection.BindingFlags.CreateInstance | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public, null, null, null)).Show();
0
 Аватар для AlmazSeo
3 / 3 / 0
Регистрация: 24.10.2011
Сообщений: 103
02.12.2012, 17:30  [ТС]
kashirin, сделал - все работает. Только есть одна проблема - программа бунтует)) вызывает вначале по одной форме а потом и вообще начинает очень много форм показывать
0
22 / 22 / 0
Регистрация: 30.11.2012
Сообщений: 54
02.12.2012, 18:05
Цитата Сообщение от AlmazSeo Посмотреть сообщение
kashirin, сделал - все работает. Только есть одна проблема - программа бунтует)) вызывает вначале по одной форме а потом и вообще начинает очень много форм показывать
выложи проект. я гляну
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2012, 18:05
Помогаю со студенческими работами здесь

Как проходить через цикл через определенное время
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Загрузка через определённое время
Многие видели на сайтах есть загрузка файла через опеределённое времмя .. у кого есть исходник ? глянуть хочу . или дайте ссылку почитать .

Самозапуск через определенное время?
Прошу помочь мне заставить программу самозапускаться ч/з определенное время. Заранее благодарен, Serj. Мой адрес: leyftd@mail.ru

Действие через определенное время
Возник вопрос, как сделать что бы скажем через 1 секунду выполнялось определенное действие? Вот код, но приходится нажимать на кнопку, а...

Выполнение скрипта через определённое время
Напомните пожалуйста функцию, которая выполнит на сервере скрипт через определённое время! Спасибо!


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru