|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
|||||||||||
Доступ к ликвидированному объекту невозможен09.09.2020, 15:45. Показов 15059. Ответов 108
Метки нет (Все метки)
Создал новую форму Form2 и новый юзер контрол UserControl1
на новую форму повесил юзер контрол (не знаю для чего но сделал ) далее в классе Program.cs написал вот что
затем окно Form2 закрыл и нажал на основной форме Form1 кнопку еще раз и получил исключение ( System.ObjectDisposedException: "Доступ к ликвидированному объекту невозможен. Имя объекта: "Form2"." как это исправить? Добавлено через 6 минут это я пытаю кешировать формы Добавлено через 1 час 0 минут не понимаю почему вылазит данное исключение? я следую этим примерам (понятно что это веб приложение но все же) https://docs.microsoft.com/ru-... startup-cs я как бы инитиализирую статическое поля а затем юзаю его почему оно теряется при закрытии? Добавлено через 7 минут пните в меня ссылку на почитать о кешировании в вин формах пожалуйста все что нахожу это только о ASP.NET а мне вин формы нужны ( Добавлено через 5 минут или же мне данные самих настроек необходимо кешировать а затем использовать их при инитиализации формы?
0
|
|||||||||||
| 09.09.2020, 15:45 | |
|
Ответы с готовыми решениями:
108
Доступ к ликвидированному объекту невозможен Доступ к ликвидированному объекту невозможен
|
|
Модератор
|
|
| 09.09.2020, 16:09 | |
|
Sanya2019, вы задумали решить не маленькую задачу.
И лучше делать полноценное приложение, а не гору костылей. Прочитайте тему от Storm23: Архитектура ПО в WinForms (FAQ & HowTo)
1
|
|
|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
|||||||||||||||||
| 09.09.2020, 16:25 [ТС] | |||||||||||||||||
|
с настройками та - же беда (
передаю из Program.cs и после инитиализации формы применяю их затем закрываю форму и после ее повторного открытия получаю исключение ( видимо да пойду штробить мануал ) спасибо! Добавлено через 3 минуты бегло почитал но это я как бэ и знал ) там указано о том что нельзя\ хранить данные в контролах, о том что использовать необходимо ООП но я то пока тестовое приложение юзаю для того что бы понимать как все это добро закешировать но пока что то вылетаю на исключения ( Добавлено через 5 минут почему я теряю объект при закрытии формы когда этот объект тупо назначается в качестве контрола на форму?
я расчитывал что this.Controls.Add(RoomForms.RForm); тупо вставит контрол на форму и при закрытии очистит только себя а выходит что чистит и мое поле в глобальном (если так можно сказать) контексте отчего так происходит?
0
|
|||||||||||||||||
|
Модератор
|
|||
| 09.09.2020, 16:32 | |||
|
Если данные в отдельном объекте, то закрытие формы никак на них не влияет. И никакого статического члена не нужно. Создали объект с данными на уровне контролёра. Открыли Форму - передали ей объект с данными. Она автоматически их отобразила. Закрыли - данные сохранены в отдельном объекте. И закрытие формы ни как на них не влияет. Если нужно изменили, сохранили данные. Нужно заново их отобразить (Представить) открываете НОВУЮ форму и передаёте тот же или иной иной объект для Представления. Добавлено через 3 минуты
0
|
|||
|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
|||
| 09.09.2020, 16:36 [ТС] | |||
|
по сути в классе Program.cs я создал класс (могу в принципе вынести его в отдельный класс) далее в этом классе я создал статическое поле (с типом Баттам) далее создал экземпляр этого поля и все а после заюзал его где это необходимо что здесь не так? на форме то я его не создаю и не храню! я всего лишь добавляю новый контрол на форму а его экземпляр уже создал в другом месте или я что то не так понимаю? Добавлено через 3 минуты если \вас не затруднит дайте пример пожалуйста того что я хочу реализовать на форму должен попасть контрол типа кнопки но его настройки необходимо и его экземпляр необходимо закешить при старте программы смысл этого всего в том что настройки форм будут храниться в таблице базы данных и я бы хотел при открытии программы инитиализировать все контролы а затем юзать их можно сказать на одной форме
0
|
|||
|
Модератор
|
|||||||||||||||||
| 09.09.2020, 16:46 | |||||||||||||||||
|
Для каждого типа UI элемента все нужные данные должны храниться в отдельном типе.
Допустим:
А при закрытии она возвращает изменённую эту коллекцию. Сама коллекция хранится в контролёре и закрытие/открытие Формы никак не влияет на её существование. Добавлено через 36 секунд
1
|
|||||||||||||||||
|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
|
| 09.09.2020, 16:48 [ТС] | |
|
спасибо!
буду пробовать! я рассчитывал на то что мой код в Program.cs и представляет из себя некую модель данных а выходит что нет ( буду пробовать щас построить полноценную модель (правда пока не понимаю как )
0
|
|
|
Модератор
|
|
| 09.09.2020, 16:50 | |
|
Sanya2019, у вас типичная для начинающих ошибка: вы не можете пока различать где Данные, а где их Представление.
В таких случаях (всем начинающим) я советую начинать делать приложение с хранилища данных. Потом контролёр получающий изменяющий данные в хранилище. И только на последнем этапе View (Представление). При таком порядке реализации, когда вы приступите к View у вас уже будет чёткое понимание где данные, а где их представление.
0
|
|
|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
|
| 09.09.2020, 16:51 [ТС] | |
|
0
|
|
|
Модератор
|
||
| 09.09.2020, 16:54 | ||
|
Sanya2019, но сразу предупреждаю, я MVC/MVP плохо знаю.
Формами занимался очень давно. Сейчас работаю только с WPF. Для WPF надо реализовывать MVVM. Есть сходство с MVC/MVP, но и различий тоже хватает. Добавлено через 1 минуту Все результаты в GUI надо конвертировать в данные коллекции и потом эту коллекцию сохранять.
0
|
||
|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
||||||||
| 09.09.2020, 17:32 [ТС] | ||||||||
|
так мне только настройки контролов нужно передать на форму а методы работы с данными будут отдельно Добавлено через 19 минут немножко не понял это я юзаю в классе View верно? если я верно понимаю CreateControl(ControlData) будет всегда создавать новый экземпляр класса? а следовательно всегда запрашивать его настройки из бд? разве нет/? Добавлено через 1 минуту
Добавлено через 2 минуты нашел нечто похожее на мое ) спасибо за наводку (MVC/MVP ) :-) https://habr.com/ru/post/211899/ Добавлено через 10 минут раз-уж Вы на WPF работаете дайцте ссылок как или код (Пожалуйста) :-) как реализовать создание контролла, перемещение его по форме я написал свой интерпритатор языка /(рускоязычный) (по статье конечно же) но он скриптовой и я хочу сделать небольшой редактор форм что бы затем я мог использовать в своих формах мой синтаксис на вин формах я смог сделать конструктор контролов да вообще форм и сохранение результата их в xml файл переделать сохранение результата в базу данных не проблема проблема теперь отрисовать их все на форме когда клиент запустил уже скомпилированную программу
0
|
||||||||
|
Модератор
|
||||||
| 09.09.2020, 20:08 | ||||||
|
С БД работает Контролер. Он получает данные из БД и конвертирует их в коллекцию ControlData. Потом создаёт Форму и передаёт ей эту коллекцию. Форма конвертирует эту коллекцию методом CreateControl в контролы, которые добавляет себе в Controls с учётом их взаимной вложенности. Добавлено через 3 минуты Это просто контейнер для данных. У них у всех есть общий тип ControlData, чтобы можно было собрать в ону коллекцию. Но надо отличать как-то данные для Button и для TextBox (допустим). Поэтому создаются разные типы контейнеров для связывания с разными типами UI элементов. Добавлено через 1 минуту Добавлено через 2 минуты Модель должна выдавать необходимые данные. Один из вариантов я вам показал выше. А как у вас реализовано? Добавлено через 1 час 41 минуту С БД работает Модель. Контролер обращается к Модели для получения/сохранения Данных. Добавлено через 3 минуты То есть на Котнролере (или Презентер) функции дирижирования Model и View. Model - работает с Данными. View - с Представлением (консоль, GUI - неважно). А Контролер указывает им что и как надо делать.
0
|
||||||
|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
|
| 10.09.2020, 14:14 [ТС] | |
|
В общем не хватает у меня образования реализовать проект MVP :-(
если не сложно дайте готовый проект под студию где будет в моделе определяться именно кнопка (без базы данных ) настройки кнопки прописать статикой если не сложно!
0
|
|
|
Модератор
|
|||
| 10.09.2020, 19:49 | |||
|
Тем более очень давно формами не занимался.
0
|
|||
|
Модератор
|
|
| 10.09.2020, 19:52 | |
|
1
|
|
|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
||
| 11.09.2020, 10:27 [ТС] | ||
|
Спасибо но не могу его собрать не полный проект ( у меня VS2019 Добавлено через 8 минут собрал )) спасибо буду изучать ) Добавлено через 9 минут дааа, сложновато но думаю разберусь! Вы пол работы за меня сделали ))) спасибо Вам!
0
|
||
|
Модератор
|
||
| 11.09.2020, 11:01 | ||
Сообщение было отмечено Sanya2019 как решение
РешениеДобавлено через 1 минуту Если умеете пользоваться GitHub, то вот ссылка на доработанную версию. https://github.com/EldHasp/FormsControlsRepos
1
|
||
|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
|
| 12.09.2020, 09:56 [ТС] | |
|
0
|
|
|
Модератор
|
||
| 12.09.2020, 10:42 | ||
|
С Git можете работать? Там вариант лучше. В целом сделано с учётом возможного расширения используемых типов элементов и с соблюдением иерархии типов UI элементов. Если все возможные типы заранее известны и их мало, можно во многом упростить код.
0
|
||
|
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
|
|||
| 12.09.2020, 12:01 [ТС] | |||
|
пока не разобрался да с Git уже залил себе Добавлено через 11 минут ButtonData.cs TextBoxData.cs это конструктор контролов? которые принимают параметры из БД верно? Добавлено через 3 минуты а как я могу передать на открываемую форму MdiParent?
0
|
|||
| 12.09.2020, 12:01 | |
|
Помогаю со студенческими работами здесь
20
System.ObjectDisposedException: "Доступ к ликвидированному объекту невозможен" Из-за чего в первой строке пишет ошибку "Доступ к ликвидированному объекту невозможен"? "Доступ к ликвидированному объекту невозможен" - почему? Повторное открытие формы выдает ошибку доступа к ликвидированному объекту Доступ к ликвидированному объекту невозможен Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|