С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/117: Рейтинг темы: голосов - 117, средняя оценка - 4.81
 Аватар для KofeMNE
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99

Как обратиться к объекту на форме из другого класса

11.05.2011, 15:58. Показов 24832. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Очень интересует вопрос...

У меня есть нестатическая форма (обычная созданная студией), на ней располагаются какие-то компоненты. И есть новый класс, в котором нужно создать метод, чтобы он взаимодействовал, с одним из компонентов этой самой главной формы!!! Я уже хочу повешаться.... Перепробовал все, даже создавал новый экземпляр формы в этом классе, но все попытки тщетны!

P.S: пойду пока веревку поищу
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.05.2011, 15:58
Ответы с готовыми решениями:

Как обратиться к объекту на форме JFrame из другого класса
Здравствуйте! Может быть вопрос, сто раз задавался, но я конкретного решения не нашел. Главная форма создана через редактор среды...

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

Как обратиться к ui форме из другого класса?
Имеются 2 совершенно никак не связанных класса: MainWindow и AnotherClass. как из AnotherClass обратиться к объекту UI?

12
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350
11.05.2011, 16:22
в классе новом создаете свойство типа главной формы, пр ивызове этого класса заполняете эт освйоством this

C#
1
2
3
4
5
NewClas n=new NewClas();
n.Prop=this;
.....................
//ваш класс новый
public MainForm Prop{get;set;}
0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
11.05.2011, 16:22
отвечал на похожий вопрос как-то, не поможет?
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
11.05.2011, 17:07
C#
1
2
3
        static public void Some(object sender) {
            (sender as Form1).label1.Invoke((MethodInvoker)(delegate() { (sender as Form1).label1.Text += (Application.OpenForms[0] as Form1).button1.Text + "\n"; }));
        }
label1 и button1 на главной форме с модификатором доступа public (меняется через конструктор)
и вот так доступался к контролам на форме. по идее мейн-форма идет первой в коллекции
C#
1
(Application.OpenForms[0] as Form1).button1.Text
Добавлено через 3 минуты
nuke4303, а разве this - это не ссылка на текущий объект?
ваш подход будет работать если класс расположен в классе текущей формы. вы это имели в виду?

Добавлено через 2 минуты
znake, в вашем методе чекбокс на другой формочке тоже "паблик"?
6
 Аватар для KofeMNE
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
11.05.2011, 17:23  [ТС]
Цитата Сообщение от nuke4303 Посмотреть сообщение
NewClas n=new NewClas();
n.Prop=this;
.....................
//ваш класс новый
public MainForm Prop{get;set;}
Этот код немного не понятен, где что писать так и не понял и что значит get;set, можно немного по подробнее?
Цитата Сообщение от znake Посмотреть сообщение
отвечал на похожий вопрос как-то, не поможет?
тоже ничего не понятно

Добавлено через 10 минут
Koran, спасибо! Больше спасибо!

Помогло вот это:

C#
1
2
3
4
 public static void _LogList()
        {
            (Application.OpenForms[0] as Main_Form).LogList.AppendText("dfasdf");
        }
Оффтоп: А как плюсануть репутацию?
1
Заблокирован
11.05.2011, 17:33
Цитата Сообщение от KofeMNE Посмотреть сообщение
Оффтоп: А как плюсануть репутацию?
нажми на кнопочку "+1 Спасибо"
0
 Аватар для KofeMNE
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
11.05.2011, 18:03  [ТС]
Koran, А можно еще вопрос?

Почему то когда пытаюсь обратиться к этому элементу из другого потока, то пишет:
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'LogList' не из того потока, в котором он был создан.
Этого можно как то избежать?

Добавлено через 22 минуты
Ура разобрался! Сделал вот так:
C#
1
(Application.OpenForms[0] as Main_Form).LogList.Invoke((MethodInvoker)(delegate() { (Application.OpenForms[0] as Main_Form).LogList.AppendText("****"); }));
0
11.05.2011, 18:10

Не по теме:

приятно подсказывать тем, кто сам немного думает, а не тем, кто пишет "Алярм!!! НИД ХЕЛП!!"
вот у человека возник вопрос и сам же его решил, проявив смекалку

0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
11.05.2011, 18:22
Цитата Сообщение от Koran Посмотреть сообщение
znake, в вашем методе чекбокс на другой формочке тоже "паблик"?
сейчас уже не вспомню, но вряд ли...по умолчанию контролы создаются private и смысла трогать это я не вижу...
посмотрел еще раз пример, что выложил в той теме - опять же уверился, что контролы там private, ибо перебор там делал по (Control c in form.Controls), который, коли я ничего не путаю от private/public контролов не зависит...
1
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
11.05.2011, 21:05
znake, да, вы правы, свойство Controls формы публичное и через него можно достучаться к приватным контролам. только вот мне неясно зачем так делать: сами контролы объявлять приватными, а их коллекцию публичной? я понимаю когда их объявляют приватными - чтобы левый код не влез и не начал ими управлять, но если можно это сделать через коллекцию..
0
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
11.05.2011, 21:13
в VS "так надо" все через свойства.
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
11.05.2011, 21:59
freest, не понялЪ
0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
12.05.2011, 09:13
Цитата Сообщение от freest Посмотреть сообщение
в VS "так надо" все через свойства.
а причем тут, собственно, VS?
подозреваю, что freest имел в виду инкапсуляцию как один из принципов ООП...и что это реализовано в соответствии с этим принципом...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.05.2011, 09:13
Помогаю со студенческими работами здесь

Как обратиться к объекту из другого метода
Есть две кнопки. Одна для создания контейнера, а другая для удаления этого контейнера. Когда создаю контейнер с помощью первой кнопки,...

Как обратиться к объекту другого окна в wpf
Есть окно MainWindow, в котором весь код. Второе окно LogWindow с единственным контролом TextBox, в котором выводится лог событий...

Как обратиться к объекту формы из другого юнита?
В одном юните находится процедура procedure integral2 ; var x,y:integer ; h:real; begin x:=1; h:=10-x/9; for x :=...

Как обратиться к объекту на другой форме?
В приложении созданы 2 формы. form1 и form2. причём form1 и form2 - это не имена объектов, а имена классов. объект form2 просто создать и...

Как из класса обратиться к объекту на сцене.
здравствуйте! В методе(естественно, описанном в файле класса) в зависимости от критерия, выбирается изменение свойство того или иного...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru