Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169

Как закрывать программу в Windows Forms

20.08.2020, 17:40. Показов 1406. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, меня интересует то как после того я нажал на кнопку у меня закрывалась окно и открывалась другое.
Мне не нужно её скрывать с помощи Форма.Hide(). Мне нужно закрыть именно её. Например через Close(). Но если я так закрываю то у меня прям все закрывается.

Вот код:
C#
1
2
3
4
5
6
 private void label4_Click(object sender, EventArgs e)
        {
            Register register = new Register();
            register.Show();
            this.Close();
        }
И он мне не подходит. Я так думаю что Hide() просто скрывает форму, а мне надо что бы именно закрывала.
Ожидаю от вас помощи. (Если это не возможно, дайте знак).
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.08.2020, 17:40
Ответы с готовыми решениями:

Как перенести программу из консоли в Windows Forms?
Здравствуйте! Я написал простой код в консоли. Теперь хочу оформить эту программу через WinForms. Но возникла проблема - не могу ввести...

Windows.Forms - Процедуры, цикл for и System.Windows.Forms.Button
Доброго времени суток. Есть WinForms программа: ... private ClickedButtonId, ClickedButtonX, ClickedButtonY:Integer; ...

Переделать программу из консольной на Windows Forms
Вот у меня есть мини-игра с угадыванием чисел на консоли: z: Random rnd = new Random(); int quest = rnd.Next(0, 100); ...

6
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
20.08.2020, 17:42
Цитата Сообщение от QmlwZ Посмотреть сообщение
Здравствуйте, меня интересует то как после того я нажал на кнопку у меня закрывалась окно и открывалась другое.
Мне не нужно её скрывать с помощи Форма.Hide(). Мне нужно закрыть именно её. Например через Close(). Но если я так закрываю то у меня прям все закрывается.
При закрытии основной формы закрывается всё приложение.
0
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
20.08.2020, 17:45  [ТС]
Someone007, Спасибо за ответ!
То есть если я буду закрывать с помощи Close() то у будут закрываться все предложения?
Либо как тогда не закрывать не скрывать а просто делать форму невидимым?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
20.08.2020, 17:58
Цитата Сообщение от QmlwZ Посмотреть сообщение
Либо как тогда не закрывать не скрывать а просто делать форму невидимым?
Скрывать и делать невидимым не одно и тоже? Чем Hide() вас не устраивает?
0
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
20.08.2020, 18:06  [ТС]
Someone007, просто есть код и после того как я его скрываю несколько раз форму у меня происходит ошибка.
Каждая форма имеет метод
C#
1
2
3
4
5
6
7
 public Form1()
        {
            InitializeComponent();
 
            Animator.Start();
        }
        }
И вот в классе Animator возникает ошибка.

Вот весь его код :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
 
namespace Register
{
    public static class Animator
    {
        public static List<Animation> AnimationList = new List<Animation>();
 
        public static int Count()
        {
            return AnimationList.Count;
        }
 
        private static Thread AnimatorThread;
 
        private static double Interval;
 
        public static void Start()
        {
            Interval = 15; // FPS ~65
 
            AnimatorThread = new Thread(AnimationInvoker)
            {
                IsBackground = true,
                Name = "UI Animation"
            };
 
            AnimatorThread.Start();
        }
 
        private static void AnimationInvoker()
        {
            while (true)
            {
                AnimationList.RemoveAll(a => a.Status == Animation.AnimationStatus.Completed);
 
                Parallel.For(0, Count(), index =>
                {
                    AnimationList[index].UpdateFrame();
                });
 
                Thread.Sleep((int)Interval);
            }
        }
 
        public static void Request(Animation Anim, bool ReplaceIfExists)
        {
            Anim.Status = Animation.AnimationStatus.Requested;
 
            Animation dupAnim = GetDuplicate(Anim);
 
            if (dupAnim != null)
            {
                if (ReplaceIfExists == true)
                {
                    dupAnim.Status = Animation.AnimationStatus.Completed;
                }
                else
                {
                    return;
                }
            }
 
            AnimationList.Add(Anim);
        }
 
        private static Animation GetDuplicate(Animation Anim)
        {
            return AnimationList.Find(a => a.ID == Anim.ID);
        }
    }
}
и именно в строке
C#
1
AnimationList[index].UpdateFrame();
Происходит ошибка "System.ArgumentOutOfRangeException: "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index"

"
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
20.08.2020, 18:12
Лучший ответ Сообщение было отмечено QmlwZ как решение

Решение

Видимо вы модифицируете AnimationList во время работы метода (например где-то происходит вызов метода Request), что делать нельзя. Обращения к списку должны быть синхронизированы.
1
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
20.08.2020, 19:08  [ТС]
Someone007, а как это сделать? "Обращения к списку должны быть синхронизированы."

Добавлено через 53 минуты
Someone007, СПАСИБО БОЛЬШОЕ. Я решил проблему благодоря вам.
Жаль конечно что вы мне не ответили, но у кого какие проблемы... Но все равно, спасибо. Для меня эта программа важна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.08.2020, 19:08
Помогаю со студенческими работами здесь

Сложно ли перевести программу с C# на C++ с Windows Forms?
сложно ли перевести программу с C# на C++ с windows forms ?

Как сделать простой глобальный обработчик исключений на c# который не будет закрывать программу?
Мне нужно сделать глобальный обработчик исключения который в случае возникновения ошибки выдаст сообщение &quot;Произошла неизвестная...

Нужно переписать программу из консольной в Windows Forms
Здравствуйте, вот программа, помогите пожалуйста есть сделать в виде формы. Буду очень признательна! using System; using...

Переделать консольную программу в приложение Windows Forms
Я написала программу на консоли, но требуется еще ее сделать в WF... Если Вы способны помочь мне с этим, пожалуйста - помогите :cry: ...

Создать программу на Windows Forms с использованием базы данных
Прошу прощения, если эта тема уже обсуждалась, но я уже просто не знаю что делать:( Помогите пожалуйста, работаю на Visual Studio 2008...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru