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

Обращение к элементам формы из другого файла проекта

30.12.2017, 17:19. Показов 6813. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех с наступающим.
Есть проект, работать в котором стало не особо удобно по причине большого количества кода. Часть кода хочется перенести в другой файл .cs.
Возникает следующая проблема. При попытке вывести текст в элементе формы:

C#
1
BeginInvoke((Action)(() => label0.Text = "Я тут"));
оказывается, что и BeginInvoke, и label0 не существуют в текущем контексте. Как решается данный вопрос по-человечески?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.12.2017, 17:19
Ответы с готовыми решениями:

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

Обращение к элементам формы из другого потока
Извиняйте за очередную тему. Тут на форуме я уже их много прочитал, но все равно не могу понять эти делегаты и инвок. На форуме есть...

Обращение к элементам формы из другого pas файла
Подскажите как обратиться к элементу формы например Combobox1 из другого файла без "Form1.Combobox" а чисто напрямую ComboBox1.

25
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
17.01.2018, 15:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от hoolygan Посмотреть сообщение
у я же сделал безо всяких invoke(), и прекрасно меняется значение внутри таски, и GUI отображает.
так в примере таск ретернит в GUI thread.
C#
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < 10; i++)
            {
                //присваивание в гуи треде
                NumOfActivities = await Task.Run(() =>
                {
                    Thread.Sleep(500);
                    return i + 1;
 
                }); 
            }
это не "меняется внутри таска". Я привел пример кода, который кидает эксепшн. Вот не знаю как его рабочим сделать не возвращая логику к вашему примеру.
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
17.01.2018, 17:35
КОП, Вы в любом случае должны будете вернуться в главный поток. Тогда нужно переделывать логику вызова метода. Вот измененный кусок
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Task CalculateActivities(SetStartEnable buttonSet)
        {
 
            return
               Task.Run(() =>
                {
                    for (int i = 0; i < 5; i++)
                    {
                        Thread.Sleep(500);
                        NumOfActivities = i + 1;
                    }
                    buttonSet();
 
                });
        }
И сам обработчик кнопки
C#
1
2
3
4
5
private async void sbStart_Click(object sender, EventArgs e)
        {
            sbStart.Enabled = false;
            await mc.CalculateActivities(new SetStartEnable(SetButtonEnabled));
        }
Данные изменяются уже внутри таски. И сам измененный проект.
Вложения
Тип файла: 7z testNotifyProperty.7z (19.4 Кб, 4 просмотров)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.01.2018, 18:07
Цитата Сообщение от КОП Посмотреть сообщение
Можно/нужно ли без инвоков это делать
Можно через контекст синхронизации (хотя в принципе это то же самое). Но не нужно. Нет, конечно, можно попробовать и это даже может сработать, но делать так категорически не рекомендуется.
1
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
17.01.2018, 18:50
Цитата Сообщение от hoolygan Посмотреть сообщение
И сам измененный проект.
{"Cross-thread operation not valid: Control 'teShowProperty' accessed from a thread other than the thread it was created on."}
на
C#
1
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
вот об этом я и говорю. Либо галочку где-то надо поставить?

Цитата Сообщение от insite2012 Посмотреть сообщение
но делать так категорически не рекомендуется
гляну для общего образования, но делать не буду)

Добавлено через 8 минут
вроде неплохая статейка, оставлю ссылку https://habrahabr.ru/post/232169/
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
17.01.2018, 20:50
КОП, странно, у меня работает без проблем. Ну разве что в release не попробовал.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
17.01.2018, 23:10
Цитата Сообщение от hoolygan Посмотреть сообщение
странно, у меня работает без проблем.
вот так номер! кто из знающих прояснит?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.01.2018, 23:10

Обращение к элементам формы с другого потока
Есть форма, есть потоки, которые должны получить доступ к ProgressBar'у, расположенному на форме. Делал так: module *** Private...

Обращение к элементам из другого окна
Допустим в окне A происходят расчеты и данные записывается в специальный класс List //окно A public List&lt;string&gt; newlist...

Обращение к элементам активити из другого класса
Добрый день. Ломаю голову битый час, все не могу понять, почему у меня не получается. Опишу по шагам. Создал проект андроид (в эклипсе),...

Обращение к элементам Form из другого класса
Подскажите, будьте добры, как обратиться к элементу Form1 из другого класса. Мне нужно использовать изображение pictureBox1...

Обращение к элементам управления из другого потока. Проблемы с этим.
Не понимаю, что тут не так? Я пытаюсь из другого потока установить свойсво Maximum для ProgressBar. void...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru