|
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 15
|
|
Магическое, ненормальное поведение про простом обращении к свойству UserControl в примитивной программе. Чудеса!24.09.2013, 18:17. Показов 1156. Ответов 11
Метки нет (Все метки)
Приветствую!
Ситуация: есть два solutions:
У контрола есть конфиг файл, где хранятся цвета для рисования меню. Что происходит: я в основном проекте в дизайнере Visual Studio подключил свой контрол, ввел названия пунктов меню, выбрал цвета для отрисовки, все нормально. Теперь, ВНИМАНИЕ: по-дефолту все цвета рисуются так как нужно, НО (!) если я считываю любой цвет, к примеру MenuBorder, то мне возвращают значение не то, что я установил в дизайнере (и этот цвет нормально и правильно рисуется самой системой, так как и нужно), а возвращают цвет, который был в конфиг-файле! Но ведь цвет в контроле в конфиг-файле был уже переопределен в дизайнере в основном проекте! Что вообще невообразимо, так это то, что то, что рисуется самой системой по-умолчанию (та отрисовка, в которую я не вмешиваюсь) - все цвета правильные. А вот когда я сам рисую - неправильные. Скриншот: Обратите внимание на нижние 4 линии: они рисуются мной, они черные, а должны быть красные. Верхние линии шапки над пунктом меню рисуются системой автоматически, они красные, какими и должны быть, ибо я в дизайнере сделал MenuBorder красным. (картинку делал для stackoverflow.com, поэтому надписи английские) Чтобы не расстилать два полотна простыней кода в несколько страниц, прикрепляю эти два проекта в зипе. Прошу общественность мне помочь, кода немного и не работать тут просто нечему. В чем дело - непонятно. Абсолютная магия. Ссылка на проекты: Аттач: Projects.zip Линк: http://speedy.sh/Hq4HK/Projects.zip
0
|
|
| 24.09.2013, 18:17 | |
|
Ответы с готовыми решениями:
11
System.NullReferenceException при обращении к свойству класса Чудеса в Решетове или странное поведение QGraphicsScene |
|
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 15
|
|
| 25.09.2013, 15:08 [ТС] | |
|
Чтобы было более понятно: сам процесс рисования я произвожу в OnRenderToolStripBorder(ToolStripRenderE ventArgs e) в моем контроле (в первом солюшне, файл CustomMenuStrip.cs)
0
|
|
|
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
|
||||||
| 25.09.2013, 15:45 | ||||||
|
не скажу что до конца понял что происходит в этих двух проектов, но после того как сделаешь это:
0
|
||||||
|
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 15
|
|
| 25.09.2013, 17:55 [ТС] | |
|
Тогда немного подробнее:
В первом проекте CustomMenuStrip происходит следующее:
Во втором тестовом проекте я просто кинул свой контрол на форму и задал цвета какие мне нужно. Но в том-то и дело, что я задал Red, а рисуется цветом Black. Почему, если я в дизайнере поставил Red и все системой по-дефолту рисуется правильно, красным, а мне выдают цвет из Properties.Settings.Default, т.е. черный? Суть-то как раз и в том, чтобы можно было в дизайнере поменять цвета и все работало, ручная правка через Properties.Settings.Default исключена. Ради интереса попробуйте вызвать MessageBox с цветом MenuBorder из первого проекта и из второго, он будет разный, хотя контрол один и тот же! Ну как так может быть, чтобы один и тот же контрол возвращал разные значения для одного и того же свойства? Мистика, не иначе!
0
|
|
|
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
|
|
| 25.09.2013, 19:26 | |
|
мне кажется, пахнет полиморфизмом. простите, нет сил ковырять проект, но попробуйте поискать, в каком месте может вызываться свойство родительского (вместо дочернего) экземпляра
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 15
|
|||||||||||
| 25.09.2013, 22:48 [ТС] | |||||||||||
|
Хм... Да нет, вряд ли, я уже испробовал и так и так и СЯК и т.д.
Самое интересное, что в месте
То есть как то в Properties.Settings.Default.MenuBorder значение и сохраняется и не сохраняется одновременно. Как это?
0
|
|||||||||||
|
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
|
|
| 25.09.2013, 22:57 | |
|
можно код в конструкторе и код get свойства?
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 15
|
|||||||||||
| 25.09.2013, 23:14 [ТС] | |||||||||||
|
Код конструктора:
Код геттера:
0
|
|||||||||||
|
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
|
|
| 25.09.2013, 23:19 | |
|
значение свойства (я про get) изменяет дефолтный цвет. но объект УЖЕ СОЗДАН, и его цвет - тот, который был дефолтным ТОГДА. поэтому смена дефолтного цвета на нем не сказывается. как-то так, мне кажется
Добавлено через 3 минуты вообще не понимаю, зачем оно все. было бы поле static - все ок. но ведь это экземпляр. поэтому геттеры-сеттеры должны менять свойства экземпляра, а не дефолты сборки. даже если проблема не в этом, все равно подход неверный
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 15
|
|
| 25.09.2013, 23:28 [ТС] | |
|
Хмм.. Тогда подскажите пожалуйста, каков правильный подход? Static не подойдет, могут быть несколько меню разных цветов, а статик свойства будут действовать на все экземпляры....
0
|
|
|
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
|
|||||||||||
| 25.09.2013, 23:31 | |||||||||||
|
я делаю так:
Добавлено через 55 секунд ну и рисовалка:
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 15
|
|
| 06.10.2013, 21:31 [ТС] | |
|
sezada, большое спасибо за советы и помощь
Проект свой подправил.
0
|
|
| 06.10.2013, 21:31 | |
|
Помогаю со студенческими работами здесь
12
Ссылка на объект не указывает на экземпляр объекта при обращении к свойству tag
Странное поведение вектора при многопоточном обращении Не понятное поведение апача на VM Linux при обращении из хостовой машины ТВ-тюнер Авер медиа. При повторном обращении к программе она зависает Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|