Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
13 / 13 / 2
Регистрация: 20.09.2012
Сообщений: 170

Закрываются все окна при закрытии одной

24.09.2012, 14:31. Показов 2449. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Из первой формы вызываю, вторую и хочу чтобы она через определенный промежуток времени закрылась, все работает но не так как хотелось бы, закрываются все созданные формы одновременно, а должна каждая отдельно по своему таймеру.
VB.NET
1
2
Dim New As New Form2()
New.ShowDialog() ' открываю формы
код в самой form 2
VB.NET
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
Imports System.Timers
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
       MyBase.OnLoad(e)
       Dim tmr As New System.Timers.Timer()
       tmr.Interval = 5000
       tmr.Enabled = True
       tmr.Start()     
       AddHandler tmr.Elapsed, AddressOf OnTimedEvent
 
 
   End Sub
   Private Delegate Sub CloseFormCallback()
 
   Private Sub CloseForm()
       If InvokeRequired Then
           Dim d As New CloseFormCallback(AddressOf CloseForm)
           Invoke(d, Nothing)
       Else
           Close()
       End If
   End Sub
 
   Private Sub OnTimedEvent(ByVal sender As Object, ByVal e As ElapsedEventArgs)
       CloseForm()
   End Sub
Добавлено через 3 часа 51 минуту
Попробовал вынести в процедуру
VB.NET
1
2
3
4
5
Private Sub newForm()
        Dim New As New Form2()
        NewStiker.Texts = Message
        New.Show()
    End Sub
стало по лучше окна закрываются не одновременно а по очереди но как то уж очень быстро
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.09.2012, 14:31
Ответы с готовыми решениями:

При закрытии одной формы показать другую
Подскажите пож как можно при закрытии формы вывести другую? (Закрываешь Form1 и открывается Form2) через Form1_FormClosing как оказалось...

Не завершается процесс с несколькими потоками при закрытии окна
Как сделать, чтобы завершался процесс с несколькими потоками при закрытии главного окна, даже если эти потоки находятся в библиотеке...

Виден фон при закрытии окна, открытого через .showdialog
Подскажите, пожалуйста, как решить такую проблему. Есть 2 формы, допустим Form1 и Form2. Из первой формы открывается вторую форму: ...

11
 Аватар для eJ_Studio
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
24.09.2012, 17:36
взял твой код как есть, все идеально работает так как тебе и нужно, формы закрываются каждая со своим временем, то есть если я вызывал первую(дочернюю) раньше второй формы на 2 сек то на 2 сек она раньше и закрывается.
А как ты вызываешь вторую форму если у тебя шоудиалог стоит?или это в цикле, я вот по батону вызывал и до кнопки не добраться до тех пор пока формы не закрыта дочерняя

Добавлено через 4 минуты
ах да забыл добавить что вызывал формы просто [new].show()
и не используй зарезервированные студией слова...неужели у тебя ничего не подчеркивает студия при использовании в названии переменной слова NEW? если уж так хочется заключай в кв.скобки

и это
VB.NET
1
2
 tmr.Enabled = True
        tmr.Start()
одно и тоже. достаточно одного
0
13 / 13 / 2
Регистрация: 20.09.2012
Сообщений: 170
24.09.2012, 17:42  [ТС]
нет конечно подчеркивает, это я просто код заново переписываю в ручную, что бы запоминался и даю переменным новые (корявые) имена
VB.NET
1
New.ShowDialog()
нет у меня выскакивало исключение и я открываю его теперь
VB.NET
1
2
3
4
Private Sub newForm()
        Dim New As New Form2()
        New.Show() ' вызываю тут
    End Sub
формы открываются по порядку и закрываются тоже но как то быстро такое впечатление что первая висит 5 мин а остальные вызванные меньше
0
 Аватар для eJ_Studio
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
24.09.2012, 19:59
попробуй кинуть на форму 2 таймер и задай нужный интервал, затем в событии таймера(в форме2) в событии Tick напиши тот код который нужно чтобы срабатывал, а при вызове запускай таймер, то есть при вызове второй формы tmr.start()

Добавлено через 41 минуту
попробуй так..хотя конечно масло масленное
VB.NET
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
  Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        MyBase.OnLoad(e)
        Dim tmr As New System.Timers.Timer()
        tmr.Interval = 5000
        tmr.Enabled = True
        tmr.Start()
        AddHandler tmr.Elapsed, AddressOf OnTimedEvent
        AddHandler tick, AddressOf dsa
    End Sub
 
    Private Delegate Sub CloseFormCallback()
 
    Event tick()
 
    Sub dsa()
        Me.BeginInvoke(New MethodInvoker(AddressOf CloseForm))
    End Sub
 
    Private Sub CloseForm()
        Close()
    End Sub
 
    Private Sub OnTimedEvent(ByVal sender As Object, ByVal e As ElapsedEventArgs)
        RaiseEvent tick()
    End Sub
Добавлено через 14 минут
и зачем так усложнять? пример из книги, да?
вот так проще и все работает, хотя твой способ чисто на вид красивее

код первой формы

VB.NET
1
2
3
4
5
6
7
8
Public Class Form1
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim [New] As New Form2()
        [New].Show() ' открываю формы
        [New].Timer1.Start()
    End Sub
End Class
код второй формы

VB.NET
1
2
3
4
5
6
7
8
9
Public Class Form2
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Close()
    End Sub
 
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Interval = 5000
    End Sub
End Class
0
13 / 13 / 2
Регистрация: 20.09.2012
Сообщений: 170
25.09.2012, 13:09  [ТС]
eJ_Studio а как вывести значение таймера на форму?(используя мой пример)
смотрел тут тынц, но не смог разобраться
0
 Аватар для eJ_Studio
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
25.09.2012, 17:49
по подробнее что тебе нужно объясни
VB.NET
1
2
3
4
 Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
form1.text = timer1.interval.tostring
        Close()
    End Sub
0
13 / 13 / 2
Регистрация: 20.09.2012
Сообщений: 170
26.09.2012, 11:19  [ТС]
Хочу что бы во второй форме показывался счетчик до закрытия
0
 Аватар для eJ_Studio
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
26.09.2012, 17:06
ну тогда сделай счетчик (i = i +1) и показывай в певой форме в событии таймера, только тогда интервал у таймера меняй на 1 сек и при достижении 5(счетчика) выполняй процедуру закрытия

Добавлено через 54 минуты
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Form2
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
static count_ as byte = 0
form1.text = count_.Tostring()
if count_ = 5 then sender.stop() : closeForm()
count_ = count_ +1
    End Sub
 
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Interval = 1000
    End Sub
End Class
Добавлено через 40 секунд
ну понятно да, что текст будет отображаться в тексте первой формы..
0
0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 9
18.12.2013, 23:57
у меня программка тесты и мне нужно чтоб таймером по истечению 80 минут , программка закрылась??? помогите пожалуйста
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
19.12.2013, 08:15
Katyshka_CAT, получите разницу в минутах между временем запуска программы и текущим временем. Если разница составит 80 минут - выполните выход. И F.A.Q. в помощь!
2
1652 / 715 / 47
Регистрация: 11.03.2012
Сообщений: 1,855
Записей в блоге: 1
19.12.2013, 16:11
Katyshka_CAT,
 Комментарий модератора 
Запрещено задавать свои вопросы в чужих темах! Есть вопрос - создайте свою тему.
0
 Аватар для rockymcdale
4 / 4 / 0
Регистрация: 16.12.2012
Сообщений: 92
11.11.2015, 12:47
Предлагаю такое решение:

VB.NET
1
2
3
4
5
6
7
 Private Sub Timer_CloseNotificationform_Tick(sender As Object, e As EventArgs) Handles Timer_CloseNotificationform.Tick
        Timer_CCloseNotificationform.Interval = Timer_CloseNotificationform.Interval - 1
        If Timer_CloseNotificationform.Interval = 1 Then
            Me.Close
        End If
 
    End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2015, 12:47
Помогаю со студенческими работами здесь

Как закрыть все формы при закрытии главной
Форма2 главная, и при её закрытие должны закрыться все остальные, допустим: форма3, форма3, форма4 и форма5. Как понятно я не использую...

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

Запретить закрывать все окна при закрытии дочернего
Только начал изучать. Внутри родительского окна есть два дочерних. При нажатии на кнопку закрываются все окна, а необходимо закрыть только...

Wpf закрыть все окна при закрытии главного
Хочется, что бы когда закрываешь главное окно, все дочерние тоже закрывались. Как такое реализовать?

При закрытии одной формы отключить все переключатели на главной форме
У меня очень простая задача, но что-то не мог придумать решение. Мне нужно чтобы при закрытии одной из форм отключались все радиогруппы на...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru