Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/58: Рейтинг темы: голосов - 58, средняя оценка - 4.69
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676

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

09.09.2020, 15:45. Показов 16056. Ответов 108
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал новую форму Form2 и новый юзер контрол UserControl1

на новую форму повесил юзер контрол (не знаю для чего но сделал )

далее

в классе Program.cs написал вот что

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace TestUserForm
{
    public class RoomForms
    {
        public static Form RForm;
        // Создадим конструктор, 
        public void GETRoomForms()
        {
            RForm = new Form2();
        }
    }
    
    static class Program
    {
        
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
 
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
 
            RoomForms room_forms = new RoomForms();
            room_forms.GETRoomForms();
 
            Application.Run(new Form1());
        }
    }
}
далее на основную форму Form1 положил кнопку и в собитие кнопки написал

C#
1
2
3
4
private void button1_Click(object sender, EventArgs e)
        {
            RoomForms.RForm.Show();
        }
завел программу нажмал на кнопку и все ок окно Form2 открылось и кнопка не нем

затем окно Form2 закрыл и нажал на основной форме Form1 кнопку еще раз и получил исключение (

System.ObjectDisposedException: "Доступ к ликвидированному объекту невозможен.
Имя объекта: "Form2"."


как это исправить?

Добавлено через 6 минут
это я пытаю кешировать формы

Добавлено через 1 час 0 минут
не понимаю почему вылазит данное исключение?

я следую этим примерам (понятно что это веб приложение но все же) https://docs.microsoft.com/ru-... startup-cs

я как бы инитиализирую статическое поля а затем юзаю его почему оно теряется при закрытии?

Добавлено через 7 минут
пните в меня ссылку на почитать о кешировании в вин формах пожалуйста

все что нахожу это только о ASP.NET а мне вин формы нужны (

Добавлено через 5 минут
или же мне данные самих настроек необходимо кешировать

а затем использовать их при инитиализации формы?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2020, 15:45
Ответы с готовыми решениями:

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

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

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

108
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
12.09.2020, 18:32  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
И возможно путаница в терминологии.
не путаница я попросту оооочень плохо знаю терминалогию )
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
12.09.2020, 18:34
Цитата Сообщение от Sanya2019 Посмотреть сообщение
у меня есть тоговый проект с моей машинкой и формами на ВПФ (я ж писал чо пытался реализовать на впф но не получалось сделать MDI и в итоге забросил
но щас попробую с Вашим примером может что да получится
Для нормального WPF решения нужна своя правильная архитектура.
Иначе оно быстро превратится в гору костылей.

Думаю, вам или надо всё начать сначала - по возможности помогу с проектированием.
Или, вообще, не стоит за это браться.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
12.09.2020, 18:36  [ТС]
ну по сути то приложение что на видео имеет только два окна

одно это самое первое окно (гавное) второе это спр и и другие

во второе окно в коде просто подключаются контролы и всче описанные в отдельном классе

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для нормального WPF решения нужна своя правильная архитектура.
Иначе оно быстро превратится в гору костылей.
именно поэтому я делаю так создаю отдельное приложение на нем тренируюсь и после удачи начинаю понимать архитектуру ))))

где то так и после уже внедряю в ядро движка языка новые прибомбасы )
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
12.09.2020, 18:37
Цитата Сообщение от Sanya2019 Посмотреть сообщение
не путаница я попросту оооочень плохо знаю терминалогию
Поэтому, и прощу от вас просто описать в человеческих терминах требуемое от дочерних окон поведение: возможность пользователем менять их позицию, размеры, включать/отключать несколько и т.д.
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
12.09.2020, 18:38  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Думаю, вам ли надо всё начать сначала - по возможности помогу с проектированием.
я буду очень признателен Вашей помощи!

но боюсь вы моего тупизма не выдержите ))))


я зависаю на каждом шагу

литературу я не умею читать так как попросту не понимаю терминов а читая описания терминов всеравно ничего не понимаю (

мне всегда понятнее на примерах )))

я открываю проект ставлю точку останова и изучаю как он работает и после чего начинаю понимать его )))
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
12.09.2020, 18:39
Цитата Сообщение от Sanya2019 Посмотреть сообщение
ну по сути то приложение что на видео имеет только два окна
одно это самое первое окно (гавное) второе это спр и и другие
во второе окно в коде просто подключаются контролы и всче описанные в отдельном классе
Вот в этих трёх строках уже кроется куча подводных камней...

WPF приложение начинается с Модели, со структуры данных.
И описать надо начинать с них.
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
12.09.2020, 18:39  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Поэтому, и прощу от вас просто описать в человеческих терминах требуемое от дочерних окон поведение: возможность пользователем менять их позицию, размеры, включать/отключать несколько и т.д.
сегодня же займусь этим опишу все подробно и скину ))))

спасибо Вам еще раз
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
12.09.2020, 18:40
Цитата Сообщение от Sanya2019 Посмотреть сообщение
я открываю проект ставлю точку останова и изучаю как он работает и после чего начинаю понимать его )))
Очень многое так можно просто не суметь понять.
Тем более в ООП, где могут быть сотни вложенных вызовов методов.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
12.09.2020, 18:42  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Очень многое так можно просто не суметь понять.
Тем более в ООП, где могут быть сотни вложенных вызовов методов.
а вот с ООП у меня какраз таки все отлично!

я CMS писал ООП

Добавлено через 24 секунды
мне проще понимать ооп чем что то другое
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
12.09.2020, 18:42
Цитата Сообщение от Sanya2019 Посмотреть сообщение
а вот с ООП у меня какраз таки все отлично!
Тогда будет проще.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
12.09.2020, 18:48  [ТС]
Вот код этой панельке
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
namespace CRM_FULL_SET
{
    internal class MdiChildButton : Button
    {
        private Form _childForm;
 
        public MdiChildButton(Form childForm)
        {
            _childForm = childForm;
            Text = childForm.Text;
            childForm.FormClosed += (s, e) => Parent.Controls.Remove(this);
            childForm.TextChanged += (s, e) => Text = (s as Form).Text;
        }
 
        protected override void OnClick(EventArgs e)
        {
            base.OnClick(e);
            if (_childForm!=null)
            {
                _childForm.Show();
                _childForm.Activate();
            }
        }
 
    }
}
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
14.09.2020, 11:59  [ТС]
Здравствуйте!

В общем решил последовать Вашему совету и начать изучать ВПФ


хочу продолжеть создание своей проги на ВПФ

но думаю придумать новый интерфейс

немогли бы поскидывать примеров с удобными интерфейсами в смывсле некие бизнес приложения у который интерфейса в принципе не видно вовсе и очень удобное распаложение
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
14.09.2020, 12:10
Цитата Сообщение от Sanya2019 Посмотреть сообщение
поскидывать примеров с удобными интерфейсами в смывсле некие бизнес приложения у который интерфейса в принципе не видно вовсе и очень удобное распаложение
Я как-то не задавался таким вопросом и не искал подобное.

Поищите саи.

Мне больше интересно как реализовать ту или иную задачу, чем оценка удобности/неудобности интерфейса других приложений.

Добавлено через 2 минуты
Цитата Сообщение от Sanya2019 Посмотреть сообщение
хочу продолжеть создание своей проги на ВПФ
Тогда вам ещё до начала реализации надо хорошенько продумать архитектуру приложения в целом и правильно реализовать Модель.
Прочитайте темы по ссылке в подписи моего поста - возможно какие-то окажутся полезными.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
14.09.2020, 12:19  [ТС]
Приложил проект в нем сделал контрол который выглядет так же как 1с формы списка

виртуализация контрола датагрид

чтение экселевских файлов
Вложения
Тип файла: zip ExcelWF.zip (3.02 Мб, 0 просмотров)
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
14.09.2020, 12:25  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Мне больше интересно как реализовать ту или иную задачу, чем оценка удобности/неудобности интерфейса других приложений.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Тогда вам ещё до начала реализации надо хорошенько продумать архитектуру приложения в целом и правильно реализовать Модель.
Прочитайте темы по ссылке в подписи моего поста - возможно какие-то окажутся полезными.

проблема вся в том что все приложение завязано у меня на интерфейсе 0))

так как это по сути IDE с русскоязычным синтаксисом

Добавлено через 4 минуты
Цитата Сообщение от Sanya2019 Посмотреть сообщение
виртуализация контрола датагрид
виртуализация и др... методы реализованы в самом контроле

смысл в удобстве работы с ним

(можно было конечно вынести в отдельный класс но я хотел реализовать все одном что бы было удобно)

это я к вопросу верно ли \я реализовал?

оно то работает и работает верно и достаточно все быстро выполняет
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
14.09.2020, 12:30
Цитата Сообщение от Sanya2019 Посмотреть сообщение
проблема вся в том что все приложение завязано у меня на интерфейсе 0))
так как это по сути IDE с русскоязычным синтаксисом
Это всё равно не меняет того, что у него должна быть правильная архитектура и правильно реализованная Модель.
GUI при любом подходе для реализации задачи вторичен или третичен.

Выберите какой вам нужен GUI (по внешнему виду).
Исходя из этого появится требования к тому какие данные должны быть для этого GUI, как их надо сохранять восстанавливать, как они взаимодействуют и т.д.
Сформировав задачу уже можно будет приступить к построению архитектуры приложения.

Добавлено через 2 минуты
Цитата Сообщение от Sanya2019 Посмотреть сообщение
виртуализация и др... методы реализованы в самом контроле...
Мне трудно ответь на этот вопрос.
Для этого надо вникать в детали вашей реализации.
Что требует много свободного времени с которым у меня сейчас не ахти.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
14.09.2020, 12:39  [ТС]
хорошо спасибо!


да я буду щас выбирать новый вид интерфейса нужноподумать и после станет понятно!
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
16.09.2020, 15:35  [ТС]
Привет!

поделитесь пожалуйста проектом где реализовано следующее

1.Дерево категорий товаров на форме
2. датагрид с товарами
3. поиск товаров в датагрид по всем полям (нечто полнотекстового поиска)
4, добавление/редактирование товара (при этом после добавления строка с данным товарам должна быть выделена
5. добавление / редактирование категории товара

база данных Sqlite (entityFramework)

если база с товарами пустая тогда всегда у категории дожен быть первый уровень (Номенклатура) в данный уровень всегда включаются все остальные уровни!

при каждом открытии этой формы необходимо запрашивать товары только из самого этого первого уровня а далее уже запрашивать то что укажет пользователь!

есть ли на просторах интернета примерно така архитектура работы что бы я мог в качестве примера ее заюзать?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.09.2020, 18:05
Цитата Сообщение от Sanya2019 Посмотреть сообщение
поделитесь пожалуйста проектом где реализовано следующее
Все проекты - в разделе WPF.
Значительная часть собрана по ссылке в подписи моего поста.
Но такого как вам надо - нет.

На мой взгляд, вы делаете неверный упор на GUI.
GUI очень важен - нисколько не спорю.
Это лицо приложения и значительная часть впечатления от приложению определяется им.
Но с точки зрения реализации - роль GUI очень мала.

Цитата Сообщение от Sanya2019 Посмотреть сообщение
база данных Sqlite (entityFramework)
Вы же говорили, что у вас абстрагировано Хранилище данных.
Если у вас предусматривается мультизадачная работа, то SQLlite не лучший выбор.

При любом раскладе - это задача Репозитория Данных.
Модель работает с ним.
А куда он отправляет данные на хранение, откуда их получает - это по сути не важно.
Уровень Репозитория вы вроде писали, что можете сами реализовать.
Надо только определиться с требуемым от него функционалом.

Модель взаимодействует с Репозиторием через интерфейс и замена Репозитория ни каких проблем не создаёт.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
16.09.2020, 20:25  [ТС]
Извиняюсь видимо я не верно выразился )

мне не понятен механизм взаимодействия например датагрида с источником данных

статей куча как вывести / добавить / редактировать данные а вот как производить поиск / как после редактирования или создания установить курсор на этом элементе этого я не нашел

особенно не понятно как производить поиск

(запросы в бд мне понятны мне сам биндинг не понятен на впф

я могу как бы всегда назначать данные например ввел в окно поиска что либо затем очистил грид и ввел обратно внего данные

Добавлено через 4 минуты
Вот например я создал тестовое приложение

с одной формой которое выводит мне записи из бд

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class ТаблицыБазыДанных : DbContext
    {
        public DbSet<Nomenclatura> Nomenclaturas { get; set; }
        public ТаблицыБазыДанных() : base("DefaultConnection") { }
 
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
 
            var sqliteInitializer = new SqliteCreateDatabaseIfNotExists<ТаблицыБазыДанных>(modelBuilder);
            Database.SetInitializer(sqliteInitializer);
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
class Nomenclatura
    {
        [Autoincrement]
        public string Код { get; set; }
        public string Наименование { get; set; }
        public string Артикул { get; set; }
        public decimal Цена { get; set; }
        //public Категория Категория { get; set; }
        public int Id { get; set; }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:CRM_FULL_SET"
        xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" x:Class="CRM_FULL_SET.MainWindow"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="471*"/>
            <ColumnDefinition Width="7*"/>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="312*"/>
        </Grid.ColumnDefinitions>
        <DataGrid x:Name="Dats" Grid.ColumnSpan="4" Margin="0,0,10,0"/>
 
    </Grid>
</Window>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ОбновитьТабличнуюЧастьФормыСписка();
        }
        private void ОбновитьТабличнуюЧастьФормыСписка()
        {
            using (var context = new ТаблицыБазыДанных())
            {
                context.Nomenclaturas.Load();
                Dats.ItemsSource = context.Nomenclaturas.Local;
            }
        }
    }
это выводит мне все записи из бд но так как записей 70 000 получается слишком долго , на вин формах почему то намного быстрее это получается (
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.09.2020, 20:25

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

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

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

Повторное открытие формы выдает ошибку доступа к ликвидированному объекту
Добрый вечер всем! Раньше я работал в C++ Builder и использовал метод Close() для своих форм. Затем их можно было всегда опять показать...

Доступ к ликвидированному объекту невозможен
Всем доброго времени суток. Вообщем скажу сразу речь будет о ддосе но я делаю это исключительно в целях тестирования своих игровых...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru