[C# WinForm][Вопрос] BorderSize

DaVilka

Прославленный
Местный
Сообщения
444
Розыгрыши
0
Репутация
219
Реакции
198
Баллы
1 435
Выставил по умолчанию BorderSize = 1, но при нажатии на кнопку он меняется на 2, хотя отладчик говорит что он так и остался 1, пытался явно присвоить 1 в обработчике события PageUp/Down, те же яйца. Почему так?
 

Бордер чего? Формы?
 
Это все стили винды. Попробуй полностью отключить стили и посмотри, что будет. На крайняк вручную кнопку рисуй.
А вообще, WinForms устарел, профитней юзать WPF.
 
Это все стили винды. Попробуй полностью отключить стили и посмотри, что будет. На крайняк вручную кнопку рисуй.
А вообще, WinForms устарел, профитней юзать WPF.
Если отключить то все норм, рисовать и так и так придется, просто интересно в чем дело, заметил - если убрать фокус из кнопки то бордерсайз стает 1
 
Если отключить то все норм, рисовать и так и так придется, просто интересно в чем дело, заметил - если убрать фокус из кнопки то бордерсайз стает 1
А там вроде при фокусе не бордер, а inner glow эффект.
 
а как его убрать?
Вот тут я вряд ли помощник. Хотя 90% нужно идти в документацию Win32 API. Поройся в сторону отрисовки той же кнопки, учитывая стили Windows (так как по дефолту оно не юзает стили).

UPD: Не уверен, поможет ли, так как быстро пробежался глазами, но .
 
Последнее редактирование:
Вот тут я вряд ли помощник. Хотя 90% нужно идти в документацию Win32 API. Поройся в сторону отрисовки той же кнопки, учитывая стили Windows (так как по дефолту оно не юзает стили).

UPD: Не уверен, поможет ли, так как быстро пробежался глазами, но .
upload_2018-5-4_19-31-42.png

ты не знаешь как этот бордюр убрать? Появляется при потере фокуса после клика, но не всегда, магия какая то
 
Вот тут я вряд ли помощник. Хотя 90% нужно идти в документацию Win32 API. Поройся в сторону отрисовки той же кнопки, учитывая стили Windows (так как по дефолту оно не юзает стили).

UPD: Не уверен, поможет ли, так как быстро пробежался глазами, но .
А еще, если нажать кнопку, и форма потеряет фокус, то во круг кнопки появляется обводка даже если BorderSize = 0
upload_2018-5-4_19-34-48.png
 
А еще, если нажать кнопку, и форма потеряет фокус, то во круг кнопки появляется обводка даже если BorderSize = 0
Посмотреть вложение 23503
Как вариант, создать класс-наследник от Button и в конструкторе или в OnPaint`е вызвать:
SetStyle(ControlStyles.Selectable, false);
В этом случае кнопке нельзя будет присвоить фокус, т.е. табом теперь ее не выбирает.

UPD: Если же фокус нужен, то есть еще вариант:
Создаем класс-наследник от Button и переопределяем свойство ShowFocusCues на возвращение false:
protected override bool ShowFocusCues => false;
А в неактивном окне применяется цвет рамки, поэтому задаем цвет рамки прозрачный. Через панель свойств это нельзя сделать почему-то, поэтому идем в код и задаем цвет рамки вручную:
this.button1.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(0, 255, 255, 255);
В этом случае ShowFocusCues запретит показывать рамку вокруг текста при фокусе, а прозрачный цвет поможет визуально избавиться от рамки при потере фокуса окна (хотя сама рамка остается).
Можно еще попробовать поколдовать с GotFocus кнопки и Deactivate окна.
 
Последнее редактирование:
Назад
Сверху Снизу