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

Доступ к ликвидированному файлу невозможен

22.04.2024, 18:13. Показов 1487. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В программе я создаю таблицу с данными, которую я открываю в новой форме по нажатию на кнопку. Если эту форму закрыть и попытаться открыть снова по той же кнопке, то возникнет данная ошибка. Из-за чего она может быть вызвана?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.04.2024, 18:13
Ответы с готовыми решениями:

Доступ к ликвидированному объекту невозможен
Создал новую форму Form2 и новый юзер контрол UserControl1 на новую форму повесил юзер контрол (не знаю для чего но сделал ) ...

Доступ к ликвидированному объекту невозможен
Выкидывает ошибку,в чем может быть проблема и как ее решить? Скрины и сама прога прилагаются.

Доступ к ликвидированному объекту невозможен
Есть некий код, работает без проблем, но при добавлении в него участка private void Timer_Tick(object sender, EventArgs e) { ...

20
 Аватар для XIST
1961 / 1071 / 148
Регистрация: 01.10.2009
Сообщений: 3,602
Записей в блоге: 1
22.04.2024, 18:17
Цитата Сообщение от zazik Посмотреть сообщение
Из-за чего она может быть вызвана?
без кода только гадалка
0
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 18:26  [ТС]
Показ формы:
C#
1
2
3
4
        private void button2_Click(object sender, EventArgs e)
        {
            tableForm.Show();
        }
Код создания таблицы на форме:
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
        private void button_calculate_Click(object sender, EventArgs e)
        {
            tableForm.Controls.Clear();
 
            int debt = int.Parse(comboBox_sum.SelectedItem.ToString());
            int percent = int.Parse(label_percent_res.Text);
            int term = int.Parse(comboBox_term.SelectedItem.ToString());
            double dop = (double)percent / 12 / 100;
 
            double monthly = debt * (dop + (dop / (Math.Pow(1 + dop, term * 12) - 1)));
            monthly = Math.Ceiling(monthly);
            MessageBox.Show(monthly.ToString());
 
            List<string> listMonths = new List<string>() { "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" };
            int monNum = int.Parse(textBox_monNum.Text);
 
            DataGridView table = new DataGridView();
            table.Dock = DockStyle.Fill;
 
            table.Columns.Add("months", "Месяцы");
            table.Columns.Add("debt", "Остаток основного долга");
            table.Columns.Add("monthly", "Сумма ежемесячного взноса");
            table.Columns.Add("moneyToPercent", "Сумма в счёт погашения процентов");
            table.Columns.Add("moneyToDebt", "Сумма в счёт погашения основного долга");
            table.Columns.Add("debtOst", "Остаток основного долга на конец периода");
 
 
            for (int i = 0; i < term * 12; i++)
            {
                double moneyToPercent = Math.Ceiling(debt * 0.01);
                double moneyToDebt = monthly - moneyToPercent;
                int debtOst = debt - (int)moneyToDebt;
 
                table.Rows.Add(listMonths[monNum], debt, monthly, moneyToPercent, moneyToDebt, debtOst);
 
                if (monNum == 11)
                {
                    monNum = 0;
                }
                else
                {
                    monNum++;
                }
                debt = debtOst;
                tableForm.Controls.Add(table);
            }
 
            double moneyToPercent_ = Math.Ceiling(debt * 0.01);
            double moneyToDebt_ = debt - moneyToPercent_;
 
            table.Rows.Add(listMonths[monNum], debt, debt, moneyToPercent_, moneyToDebt_, 0);
        }
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.04.2024, 18:32
zazik, так ответ на твой вопрос находится прямо в самом вопросе!
Цитата Сообщение от zazik Посмотреть сообщение
Доступ к ликвидированному
Может не стоит форму "ликвидировать", а просто скрывать (Hide)?
0
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 18:34  [ТС]
Да вроде и сам не хочу е "Ликвидировать". Просто хочу скрыть, ликвидируется она сама при закрытии формы
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.04.2024, 18:39
zazik, не видно кода, где идет закрытие окна. Покажи.
0
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 18:41  [ТС]
Конкретно я не прописывал этого, просто обычное закрытие окна формы на кнопку "крестика".
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.04.2024, 18:43
zazik, ну так она сперва где-то должна создаваться. Этого тоже не видно.
Цитата Сообщение от zazik Посмотреть сообщение
tableForm.Show();
А создание ее где?
0
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 18:49  [ТС]
Создание идёт на первой (основной форме)

Добавлено через 1 минуту
Ну я так понимаю, что закрытие формы прописано самим Windows.

(прошу прощения, я новичок в этом деле)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.04.2024, 18:52
Лучший ответ Сообщение было отмечено zazik как решение

Решение

Цитата Сообщение от zazik Посмотреть сообщение
Создание идёт на первой (основной форме)
Предположу, что вторая форма создается в момент инициализации первой, раз это код ты не приводишь. Тогда естественно, какое окно ты хочешь получить второй раз, если его никто не создает?
Вынеси создание окна в метод кнопки, которая его показывает.

Добавлено через 48 секунд
Цитата Сообщение от zazik Посмотреть сообщение
я новичок в этом деле
Ну то что не профессионал - это как-то заметно
1
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 18:57  [ТС]
Каким образом реализовать создание? Если открытие формы по кнопке идёт после создания таблицы на этой несозданной ёще форме

Добавлено через 39 секунд
Я конечно могу скинуть архив с проектом, но наверное открывать проект муторно

Добавлено через 1 минуту
А. Наверное я объявлю DataGridView на классе
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.04.2024, 18:58
Лучший ответ Сообщение было отмечено zazik как решение

Решение

Вот сюда:
Цитата Сообщение от zazik Посмотреть сообщение
private void button2_Click(object sender, EventArgs e)
{
     tableForm.Show();
}
добавь
C#
1
Form tableForm = new Form();
перед Show(). И убери это от туда, где это сейчас.
1
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 18:59  [ТС]
Ну да, по коду заметно))
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.04.2024, 19:00
Но туда еще какие-то данные передаются, раз таблицы в ней показываются. Код похоже не твой вовсе...
0
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 19:05  [ТС]
Всё заработало!

Код мой, всё сам.

Добавлено через 14 секунд
Спасибо
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.04.2024, 19:15
Цитата Сообщение от zazik Посмотреть сообщение
Всё заработало!
и таблицы показываются в ней? А где они туда передаются?
0
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 19:20  [ТС]
C#
1
2
3
4
5
6
7
8
9
        private void button_tableShow_Click(object sender, EventArgs e)
        {
            Form tableForm = new Form();
            tableForm.Width = 800;
            tableForm.Height = 550;
            tableForm.Controls.Clear();
            tableForm.Controls.Add(table);
            tableForm.ShowDialog();
        }
Вот здесь. Всё есть.

Сейчас проверяю на ошибки.
Возможно появилась одна
0
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 19:24  [ТС]
Да, вот ошибка.
Постоянно создаются новые столбцы...
Миниатюры
Доступ к ликвидированному файлу невозможен   Доступ к ликвидированному файлу невозможен  
0
0 / 0 / 0
Регистрация: 16.04.2024
Сообщений: 20
22.04.2024, 19:25  [ТС]
Может быть вы знаете, как очистить объект DataGridView?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.04.2024, 19:30
Лучший ответ Сообщение было отмечено zazik как решение

Решение

Цитата Сообщение от zazik Посмотреть сообщение
как очистить объект DataGridView?
Rows.Clear(); наверное.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2024, 19:30
Помогаю со студенческими работами здесь

RerortViewer: Доступ к ликвидированному объекту невозможен
Добрый день! Пытаюсь отобразить в репорте результат поиска в БД по дате, первый запрос работает нормально, т.е. я выбираю дату, нажимаю...

System.ObjectDisposedException: "Доступ к ликвидированному объекту невозможен"
У меня две формы (первая форма это основная, а вторая форма как вспомогательная), которые одновременно загружается. Если же пользователь...

Из-за чего в первой строке пишет ошибку "Доступ к ликвидированному объекту невозможен"?
int d = DateTime.Now.Day; int my = DateTime.Now.Month; if (richTextBox1.TextLength &gt; 0 &amp;...

"Доступ к ликвидированному объекту невозможен" - почему?
Здравствуйте! У меня есть 2 формы. Первая форма запускает вторую форму вот таким вот образом: Form2 f2 = new Form2(); ...

Доступ к ликвидированному объекту невозможен
Всем доброго времени суток! Никак не могу избавиться от ошибки: System.ObjectDisposedException: Доступ к ликвидированному объекту...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
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, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru