0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 6
|
|||||||||||
1 | |||||||||||
Изменение цвета элемента из другой формы08.12.2015, 21:22. Показов 2928. Ответов 6
Метки нет (Все метки)
Создаю некую систему телеметрии и телеуправления. Общение происходит через COM port. Для данного дела надо создать графический интерфейс. Не смотря на очень начальные познания в этом деле, решил реализовать это самостоятельно. С премудростями общения через COM port разобрался, но споткнулся на таком вопросе. На MainWindow.xaml создан квадрат, назвал я его "Т1". В зависимости от поступающего через COM port сообщения этот квадрат должен менять цвет заливки. Для репетиции создал такое
0
|
08.12.2015, 21:22 | |
Ответы с готовыми решениями:
6
Изменение цвета одной формы из другой формы Получение и изменение свойств элемента формы из другой формы Изменение цвета в поле формы при совпадении значения поля с аналогичным полем другой Изменение элемента формы из другой формы |
1846 / 1353 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|||||||||||
09.12.2015, 17:50 | 2 | ||||||||||
Вы абсолютно правы)
Не, не надо объявлять объект "Т1" в COM_port. COM_port - это класс бизнес логики, нафига ему знать о каких-то там квадратах? COM_port будет очень не доволен, если помимо его непосредственных обязанностей его ещё и будут заставлять квадраты раскрашивать. "А потом заборы начнут заставлять красить" - думает COM_port. Пусть вон MainWindow и занимается своими квадратами, раз он их и создаёт. Вот MainWindow, у него есть квадрат T1. А ещё у него есть COM_port. Вот живёт себе MainWindow, поживает, и думает, как бы ему узнать, когда нужно изменить цвет квадрата? Неплохо было бы, чтобы COM_port сам тыкнул MainWindow, когда нужно. Но как? Конечно же через события. Создадим событие DataReceived у COM_port:
А MainWindow пускай подпишется на это событие:
0
|
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 6
|
||||||||||||||||
10.12.2015, 01:33 [ТС] | 3 | |||||||||||||||
Большое спасибо за ответ. Но при попытке применить Ваш код Visual Studi заругалась в двух местах.
В COM_port на строке 14
В MainWindow на строке 7
Скажу честно, с моими познаниями это на грани моего понимания, помогите исправить. Добавлено через 2 часа 52 минуты В MainWindow вроде разобрался. 7 строка теперь выглядит так
А вот где грабли в COM_port хоть убей, не пойму. Может кто подскажет?
0
|
1846 / 1353 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|
10.12.2015, 10:02 | 4 |
Почитайте книжечку Троелсена про C#. Будет легче разобраться.
Я код писал прямо здесь в этом окошке, а не в студии. Поэтому за ошибки компиляции не отвечаю. Рассказывал просто об идее. Но если Вы посмотрите на следующую строку, то заметите, что я просто забыл прописать возвращаемый тип у метода RaiseDataReceived. Об этом самом, кстати, Вам и написал компилятор: Метод не правильно назвал. Хотел его назвать comm_DataReceived, но забыл переименовать. Короче, почитайте вот здесь. Та же книга Троелсена, плюс комментарии и дополнения от товарища Ерохина.
1
|
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 6
|
||||||||||||||||
12.12.2015, 12:01 [ТС] | 5 | |||||||||||||||
Что-то я совсем запутался. Исправил ошибки, всё скомпилировалось и запустилось:
MainWindow
0
|
1846 / 1353 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
||||||
12.12.2015, 21:56 | 6 | |||||
Не пугайтесь) Всё нормально. Этот код просто выполняется из другого потока. Его нужно вызвать в основном потоке приложения.
1
|
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 6
|
|
12.12.2015, 22:45 [ТС] | 7 |
Слава Богу заработало. Большое спасибо за помощь!
0
|
12.12.2015, 22:45 | |
12.12.2015, 22:45 | |
Помогаю со студенческими работами здесь
7
Изменение элемента главной формы через другой класс Изменение цвета фона элемента управления формы при запуске процедуры. Запрет на заполнение поля в зав-ти от наличия данных в другом поле Задайте изменение цвета кнопок и цвета шрифта на кнопках формы в ходе выполнения программы Изменение цвета формы в зависимости от положения формы по нажатию кнопки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |