Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Свойства элемента управления

376
26 ноября 2010 года
Absolut
220 / / 22.11.2002
Как известно VS 2010 подсвечивает жирным шрифтом измененные свойства элемента управления (в окне свойств). Возврат к значению по умолчанию возможен при выборе сброса в контекстном меню конкретного свойства; при этом шрифт вновь становится обычным (не жирным).
Если же вручную установить такое же значение свойства, как и по умолчанию, шрифт всё равно остается жирным. В общем-то никакой проблемы в этом как бы и не возникало. До текущего момента.

Приходится использовать данный элемент управления в проекте, где отключены стили WinXP (т.е. нет вызова Application.EnableVisualStyles() ). При этом наблюдается такая картина:
Если свойство установлено по умолчанию (обычный шрифт) - то элемент рисуется белым.
Если свойство установлено вручную, но с тем же значением, что и по умолчанию (жирный шрифт) - элемент рисуется серым.

Отсюда вытекает вопрос: почему такое происходит, что при одинаковых (в панели свойств) значениях свойства элемент отображается по разному? Хотя среда и выделяет это шрифтом. Как выявить программно, используется ли свойство по умолчанию, или же оно только соответствует по значению тому, что должно быть по умолчанию, но задано принудительно?
241
26 ноября 2010 года
Sanila_san
1.6K / / 07.06.2005
А если программно объявить явные значения нужных свойств при инициализации объекта, сработает? Я просто с таким не сталкивался. Кстати, какой фреймворк?
376
26 ноября 2010 года
Absolut
220 / / 22.11.2002
Цитата: Sanila_san
А если программно объявить явные значения нужных свойств при инициализации объекта, сработает? Я просто с таким не сталкивался. Кстати, какой фреймворк?


Если программно присвоить, то аналогично ручному выбору. А можно программно сбросить в значение по умолчанию? Т.е. выполнить то, что происходит по "Reset" из контекстного меню свойства. Или хотя бы получить это значение? .Net 3.5

297
28 ноября 2010 года
koodeer
1.2K / / 02.05.2009
Значение свойства по умолчанию задаётся аттрибутом DefaultValueAttribute. Можно его получить (пример кода там есть), и сравнить с текущим; если надо - изменить программно.

Насчёт ручного задания свойств. Я тоже замечал, что не всегда шрифт становится нормальным, не жирным, после возврата значение в окне свойств к дефолтному. Почему-то среда иногда глючит. Устранить это можно, удалив строку с заданием этого свойства у компонента в файле *.Designer.cs.
376
29 ноября 2010 года
Absolut
220 / / 22.11.2002
Цитата: koodeer
Значение свойства по умолчанию задаётся аттрибутом DefaultValueAttribute. Можно его получить (пример кода там есть), и сравнить с текущим; если надо - изменить программно.



Получилось, что для свойства BackColor значения по умолчанию нет.

 
Код:
AttributeCollection attributes = TypeDescriptor.GetProperties(checkBox1)["BackColor"].Attributes;

DefaultValueAttribute myAttribute =
               (DefaultValueAttribute)attributes[typeof(DefaultValueAttribute)];

myAttribute устанавливается в null. Интересно, кто же тогда его задает и где?
297
29 ноября 2010 года
koodeer
1.2K / / 02.05.2009
BackColor если не задано вручную, то имеет то же значение, что у родительского контрола.

Думаю, пригодится свойство DefaultBackColor.
376
29 ноября 2010 года
Absolut
220 / / 22.11.2002
Удивительное рядом.
Сравниваю checkBox1.BackColor и CheckBox.DefaultBackColor - значения одинаковые.
При этом checkBox (рисуется в режиме кнопки) отображается белым цветом в целевом приложении. Задаю принудительное присваивание, т.е. checkBox1.BackColor = CheckBox.DefaultBackColor; и в результате вижу серый цвет :)
Похоже, что при установке свойства BackColor происходит еще что-то помимо присваивания значения цвета.
242
30 ноября 2010 года
Оlga
2.2K / / 04.02.2006
насмотрелась я этих чудес в vs2008, когда целый ряд контроллов, не хочу вспоминать каких именно, при обращении к их именам выдавал мне пустые строки, ту бишь "", вместо тех имен, которые были прописаны в Properties. пришлось присваивать эти имена в ручную.
376
30 ноября 2010 года
Absolut
220 / / 22.11.2002
Цитата: Оlga
насмотрелась я этих чудес в vs2008, когда целый ряд контроллов, не хочу вспоминать каких именно, при обращении к их именам выдавал мне пустые строки, ту бишь "", вместо тех имен, которые были прописаны в Properties. пришлось присваивать эти имена в ручную.


Всё таки разные значения свойств при одинаковом поведении и одинаковые значения свойств и разное поведение - не одно и то же :) Стало быть ждем следующую VS или патч. А пока придется задавать принудительно ручками.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог