Вызов функции в форме

#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 для более чистого решения потребуется больше деталей, которые могут быть не связаны с вопросом, кроме того, я не думаю, что решение с плохим дизайном должно быть отклонено