Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778

Как передать Экземпляр Класса в SubWindow?

28.12.2018, 14:50. Показов 2808. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем,

Имею следующий public class: ABC

MainWindow:
C#
1
 public ABC abc = null;

и потом пользуюсь его методами в MainWindow. Это работает превосходно.

C#
1
abc.codes();
Вопрос как правильно передать экземпляр в SubWindow?

Спасибо!

Добавлено через 18 минут
Вроде есть два способа.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.12.2018, 14:50
Ответы с готовыми решениями:

Как в случае с Dependency Injection внедрять отдельный экземпляр некоторого класса только лишь для одного другого класса
Здравствуйте, пытаюсь понять как же всё таки правильно использовать Dependency Injection в случае c ASP.NET Web Api2 и Entity Framework 6...

Как передать форму (доступ к контролам) в класс, не создавая ее экземпляр?
вопрос в название темы,спасибо!

Как правильно передать ссылку на экземпляр объекта из одной формы в другую?
Добрый день. Подскажите пожалуйста, как правильно передать ссылку на экземпляр объекта из одной формы в другую? Основная идея такая:...

27
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
28.12.2018, 22:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Bulky Посмотреть сообщение
XYZ(тип прибора, firmware version, на каком разъеме сидит)
если постоянно к одному и тому же прибору "цепляешься". То эти параметры не меняются для всей App в целом.
повторюсь, т.к. все это работает уже. Вопрос как это сделать все по фэншую.
Я для этого и разбираюсь.

То есть фактически XYZ(тип прибора, firmware version, на каком разъеме сидит) - задаёт физически конкретный прибор.
При этом не важно сколько экземпляров XYZ с одинаковыми параметрами будет создано. Все они будут работать с одним и тем же прибором.
И фактически прибор и является хранилищем внутренних данных объекта. Поэтому все объекты связанные с конкретным прибором имеют одинаковые внутренние состояния.

Если так. То "по феншую" неправильно прописаны конструкторы класса XYZ в библиотеке Reg.Power. Но Вы это не в состоянии исправить.

Если у Вас используется только один прибор, то есть XYZ(тип прибора, firmware version, на каком разъеме сидит) - параметры всегда одни и те же, то оставьте как есть.
Если же у Вас набор приборов, то для уменьшения накладных расходов можно сделать статический класс, в котором будет списочное поле из экземпляров XYZ. Когда обращаетесь за новым экземпляром, класс проверяет есть такой в списке или нет. Если нет, то создаёт новый и вносит в список в список. Если есть, то вместо создания нового, возвращает ссылку на ранее созданный из списка.
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
28.12.2018, 23:12  [ТС]
Да, есть еще один способ.

В MainWindow, в Event которое вызывает Subwindow можно передать экземпляр в SubWindow:

C#
1
SubWindow_xyz = MainForm_xyz;
и затем в SubWindow сделать так:

C#
1
public Reg.Power.XYZ SubWindow_xyz;
и далее работать с методами этого класса.

Добавлено через 20 минут
Но самый прикол в том, что пару недель назад это все работало без каких либо созданий конструкторов в MainWindow и SubWindow. Один из наших понес лабораторку на проверку, было 15 минут позора, т.к. повылетали nullReference exceptions.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
28.12.2018, 23:16
Цитата Сообщение от Bulky Посмотреть сообщение
В MainWindow, в Event которое вызывает Subwindow можно передать экземпляр в SubWindow:
Да, можно и так.
Но, как Вы говорите "по феншую", раз это реально физические приборы, то есть они существуют независимо от Ваней программы, то объекты работающие с ними (фактически это драйвера) должны быть статическими.
Поэтому, предлагаю такой вариант (если у Вас один прибор)
C#
1
2
3
4
5
public static class stXYZ
{
    public static XYZ _myXYZ;
    public static MyXYZ => _myXYZ ?? (_myXYZ = new XYZ (нужные параметры));
}
Тогда из любого места приложения Вы можете обратиться к своему прибору так stXYZ.MyXYZ.НужныйМетод(Нужные параметры);
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
28.12.2018, 23:23  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Тогда из любого места приложения Вы можете обратиться к своему прибору так stXYZ.MyXYZ.НужныйМетод(Нужные параметры);
Это и есть тот самый "wrapper"?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
28.12.2018, 23:25
Цитата Сообщение от Bulky Посмотреть сообщение
Это и есть тот самый "wrapper"?
Ну, почти. В очень простом виде. Но Вам зачем сложности? Они нужны для множества объектов, а у Вас один.
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
28.12.2018, 23:29  [ТС]
ОК. буду пробовать. Спасибо за фэншуй и до завтра. )
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
30.12.2018, 14:54  [ТС]
Элд Хасп,
С наступающим!

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

Так, на будущее, вопрос. Как влияет на производительность App и OS в целом передача десятка экземпляров класса в SubWIndows?
Если нагружает, то какую процедуру нужно выполнить при закрытии SubWindow, чтобы разгрузить.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
30.12.2018, 15:07
Цитата Сообщение от Bulky Посмотреть сообщение
Так, на будущее, вопрос. Как влияет на производительность App и OS в целом передача десятка экземпляров класса в SubWIndows?
Если нагружает, то какую процедуру нужно выполнить при закрытии SubWindow, чтобы разгрузить.
Ну У Вас же такая передача происходит не миллион раз в секунду?
Забейте - это не существенно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.12.2018, 15:07

Как создать экземпляр класса по условию
Доброго времени суток. Нужна помощь в решении следующей задачи: Исходные данные Имеется решение типа WindowsFormsApplication. В нем,...

Как создать экземпляр класса динамически?
Здравствуйте, уважаемые! Существует пустая форма. Мне надо динамически, по нажатию кнопки, например(ну форма с одной кнопкой), добавить...

Как создать экземпляр класса библиотеки
есть сервер создаю прослушку ChannelServices.RegisterChannel(new HttpChannel(60000)); ServerAccess1 ser = new...

Как найти экземпляр класса в коллекции, если известен ClientPCId?
имеется коллекция ObservableCollection<Task> класс Task: public partial class Task { #region Primitive Properties ...

Как получить искомый экземпляр класса одной поисковой строкой LINQа
Здравствуйте, Вопрос по LINQ Скажем есть класс Person и есть список этих классов. Person p1 = new Person() { name =...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru