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

Передача информации между классами

10.01.2017, 22:54. Показов 2915. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток, интересует такой вопрос.

собственно как передавать информацию между классами, то есть у меня есть Form1 и Class1

я разобрался как из Class1 получать информацию в Form1.
C#
1
Class1 op = new Class1();
но как наоборот ??

пытался так же, то есть
C#
1
Form1 ok = new Form1();
Но выдает ошибку о бесконечном цикле.
собственно как закрыть цикл ??
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.01.2017, 22:54
Ответы с готовыми решениями:

передача параметров между классами
есть форма. У формы есть контролы(элементы управления). Н-р textBox1. И кнопка button1. Также имеется класс , н-р sobakas.cs Я...

Передача данных между классами
Довольно ламерский вопрос, но все таки.. есть 2 класса, один принадлежит форме на которой расположен датагрид, второй пользовательский.....

Передача данных между классами
есть: public partial class Controller_MainForm : Form в котором есть переменные public int cordX, cordY; которые необходимо передать...

9
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
11.01.2017, 02:43
Цитата Сообщение от Tanker1234 Посмотреть сообщение
пытался так же
Неправильно пытались! Для передачи параметров в класс существуют аргументы. Их и нужно использовать!
А если уж приспичило использовать форму в классе, что, по сути, неправильно, то нужно не создавать новый экземпляр формы, а передавать ссылку на существующую в конструкторе класса.

Добавлено через 10 минут
Т.е. вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    class class1
    {
        Form1 F1;
 
        public class1(Form1 _F1)
        {
            F1 = _F1;
        }
 
        //где то в коде класса
        private void form1Name()
        {
            string s = F1.Name;
        }
    }
а создавать экземпляр класса нужно вот так
C#
1
class1 cl1 = new class1(this);
1
0 / 0 / 2
Регистрация: 18.09.2016
Сообщений: 110
11.01.2017, 09:10  [ТС]
Почему это является не правильно ?
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
11.01.2017, 09:21
Потому что в форме Вы создаете экземпляр класса, а в классе создаете НОВЫЙ экземпляр формы, который, в свою очередь, опять создает НОВЫЙ экземпляр класса и т.д. Получается бесконечный цикл, да еще и экземпляры класса и формы у Вас плодятся со страшной скоростью. Если немного подождать, то вся память будет занята и среда исполнения выкинет исключение, т.к. новые объекты просто напросто будет негде создавать!

Добавлено через 4 минуты
Или Вы спрашивали почему данный метод передачи данных не совсем корректен? Хотя бы потому, что у Вас класс получается привязан к определенной форме и создать его можно только из этой формы. Точнее, говоря, создать его можно в любом месте, но при этом необходимо передать в конструктор ссылку на форму Form1.
1
0 / 0 / 2
Регистрация: 18.09.2016
Сообщений: 110
11.01.2017, 09:23  [ТС]
То есть если я запишу код который вы дали то это все ровно будет не правильно ?
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
11.01.2017, 09:27
Лучший ответ Сообщение было отмечено Tanker1234 как решение

Решение

А чем Вас не устраивает передача параметров в виде аргументов функций класса???

Добавлено через 1 минуту
Цитата Сообщение от Tanker1234 Посмотреть сообщение
То есть если я запишу код который вы дали то это все ровно будет не правильно ?
Это будет работать, но такой стиль программирования не является хорошим! Скажем так... Это не профессионально, но работоспособно!
1
0 / 0 / 2
Регистрация: 18.09.2016
Сообщений: 110
11.01.2017, 09:33  [ТС]
Меня все устаивает, главное что бы правильно работало ))

Добавлено через 5 минут
Благодарю вас за маленький урок )
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
11.01.2017, 09:43
Цитата Сообщение от Tanker1234 Посмотреть сообщение
Меня все устаивает, главное что бы правильно работало ))
Дело, как говорится, хозяйское! Со временем, научитесь и профессионально делать!
Цитата Сообщение от Tanker1234 Посмотреть сообщение
Благодарю вас за маленький урок )
Да не за что! Это было не трудно!
Кстати, по поводу уроков... Почитайте вот эти посты:
Ответы на 7 самых частых вопросов по WinForms
Архитектура ПО в WinForms (FAQ & HowTo)
В них достаточно доходчиво рассказывается о некоторых тонкостях программирования с WinForms, с которыми приходится сталкиваться начинающим программистам.
0
 Аватар для kesean
292 / 291 / 108
Регистрация: 04.09.2010
Сообщений: 638
11.01.2017, 21:02
Цитата Сообщение от Shogun31337 Посмотреть сообщение
у Вас класс получается привязан к определенной форме и создать его можно только из этой формы
Это с какого перепуга?
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Точнее, говоря, создать его можно в любом месте, но при этом необходимо передать в конструктор ссылку на форму Form1.
Это если конструктор только один. И, кроме того, никто не мешает передать пустую ссылку.
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Это не профессионально
Гы. Т.е. разработчики мелкомягких не являются профессионалами? Посмотрите класс Control. Он жестко привязан к контейнеру (св-во Parent)
Откуда вам знать какая задача стоит перед топикстартером? Возможно, его класс должен быть жестко привязан к экземпляру формы.
Так что, не спешите поучать других, возможно, вы сами не особо ориентируетесь.
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
11.01.2017, 22:29
Цитата Сообщение от kesean Посмотреть сообщение
Это с какого перепуга?
Уточнил ниже, что не только в этой форме.
Цитата Сообщение от kesean Посмотреть сообщение
Это если конструктор только один. И, кроме того, никто не мешает передать пустую ссылку.
Можно и конструкторов несколько сделать, можно и ссылку пустую передать. Разве я утверждал обратное???
Цитата Сообщение от kesean Посмотреть сообщение
Посмотрите класс Control. Он жестко привязан к контейнеру (св-во Parent)
Свойство parent все же не жесткая привязка к конкретной форме типа Form1! Или я не прав???
Цитата Сообщение от kesean Посмотреть сообщение
возможно, вы сами не особо ориентируетесь
Возможно... Я и не претендую на звание гуру программирования и ясновидящего в одном лице! И, к тому же, я ведь не сказал ТС, что так делать категорически нельзя! Более того, сам же этот способ и предложил!

PS Вообще, мне непонятно откуда столько возмущений... Если Вы считаете абсолютно корректным и правильным способ передачи формы в конструктор класса и сами постоянно так делаете, то можно было просто так и сказать... Ну и желательно еще было бы привести доводы в защиту этого профессионального метода!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.01.2017, 22:29
Помогаю со студенческими работами здесь

Передача массива объектов между классами
В общем проблема следующая - есть общий для всех классов ArrayList. Доступ к нему делаю через отдельный статический класс, как один из...

Передача информации между формами.Ошибка:". не содержит конструктор"
В зависимости од того, что ввёл пользователь в первой форме, надо открыть другую форму с соответствующими свойствами объектов.Никак не мог...

Передача строк между классами
Здравствуйте. Возникла проблема в формировании логов. Имеется приложение, с кучей форм, классов. Необходимо при возникновении в каждом...

Передача данных между классами - в чем ошибка?
На форуме были несколько похожих тем,но все же не могу понять,в чем конкретно у меня ошибка. Проблема: значение переменной не передается...

Доступ между классами
Всем добрый день. У меня есть программа, на примере которой нас начали учить ООП (в коде часть проги). Значить есть кнопка, по нажатие...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью 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. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru