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

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

11.05.2011, 15:58. Показов 24855. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru