#c# #forms
#c# #формы
Вопрос:
пожалуйста, будьте осторожны. Я очень новичок в программировании и нахожу свой путь по ходу дела.
Я создал набор клиентских / серверных сокетов в классе под названием communications, которые все функционируют нормально.
Как мне использовать триггер получения набора данных для вызова набора функций в форме для обновления содержимого формы?
Спасибо
Комментарии:
1. Стараюсь быть как можно деликатнее; вам нужно показать нам какой-нибудь код. Это слишком широко, чтобы ответить, не видя, что вы пытаетесь сделать
2. @Jamiec Я думаю, что он ищет идею, а не реализацию
3. Как предполагает @Ali, я искал руководство, чему научиться
Ответ №1:
Одним из вариантов является event
https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/events/
Если ваш класс связи получает что-то для запуска, он может опубликовать это в событии. Все, что подписалось на это событие, получит указанную вами информацию.
Обязательно очистите подписки, прежде чем удалять подписчиков.
Обратите внимание, что в зависимости от вашего подхода вы, вероятно, уже используете события, поскольку используете формы. Такие вещи, как myButton.Click = ....
Комментарии:
1. Спасибо, я думаю, это дает мне подсказку. Смотрите YouTube сейчас, чтобы понять и научиться включать события.
Ответ №2:
вы можете передать ссылку на свою форму (или представление) классу communications. и вызовите метод, который отвечает за изменение содержимого вашей формы
class Communications {
private MyForm myForm;
....
}
...
//the code when you receiving a set of data
this.myForm.ChangeContent(data);
...
но вы должны знать, что при получении данных в другом потоке, отличном от MainThread (UIThread), вы выясняете, как изменить пользовательский интерфейс из другого потока (я думаю, вы можете найти ответы здесь, в Stackoverflow)
Комментарии:
1. Я не голосовал против, но я бы предположил, что это потому, что это способствует чрезвычайно сильной связи между классом и формой.
2. @McAden для более чистого решения потребуется больше деталей, которые могут быть не связаны с вопросом, кроме того, я не думаю, что решение с плохим дизайном должно быть отклонено