Просмотр полной версии : [C# WinForm][Вопрос] BorderSize
Выставил по умолчанию BorderSize = 1, но при нажатии на кнопку он меняется на 2, хотя отладчик говорит что он так и остался 1, пытался явно присвоить 1 в обработчике события PageUp/Down, те же яйца. Почему так?
ZubasticZubastic верифицированный пользователь.
30.04.2018, 15:36
Бордер чего? Формы?
Бордер чего? Формы?
Кнопки
Бордер чего? Формы?
разве у формы есть бордерсайз?
Mizuwokiru
30.04.2018, 17:02
Это все стили винды. Попробуй полностью отключить стили и посмотри, что будет. На крайняк вручную кнопку рисуй.
А вообще, WinForms устарел, профитней юзать WPF.
Это все стили винды. Попробуй полностью отключить стили и посмотри, что будет. На крайняк вручную кнопку рисуй.
А вообще, WinForms устарел, профитней юзать WPF.
Если отключить то все норм, рисовать и так и так придется, просто интересно в чем дело, заметил - если убрать фокус из кнопки то бордерсайз стает 1
Mizuwokiru
01.05.2018, 02:00
Если отключить то все норм, рисовать и так и так придется, просто интересно в чем дело, заметил - если убрать фокус из кнопки то бордерсайз стает 1
А там вроде при фокусе не бордер, а inner glow эффект.
А там вроде при фокусе не бордер, а inner glow эффект.
а как его убрать?
Mizuwokiru
01.05.2018, 02:33
а как его убрать?
Вот тут я вряд ли помощник. Хотя 90% нужно идти в документацию Win32 API. Поройся в сторону отрисовки той же кнопки, учитывая стили Windows (так как по дефолту оно не юзает стили).
UPD: Не уверен, поможет ли, так как быстро пробежался глазами, но вот (https://stackoverflow.com/questions/148729/how-to-set-change-remove-focus-style-on-a-button-in-c).
Вот тут я вряд ли помощник. Хотя 90% нужно идти в документацию Win32 API. Поройся в сторону отрисовки той же кнопки, учитывая стили Windows (так как по дефолту оно не юзает стили).
UPD: Не уверен, поможет ли, так как быстро пробежался глазами, но вот (https://stackoverflow.com/questions/148729/how-to-set-change-remove-focus-style-on-a-button-in-c).
ты не знаешь как этот бордюр убрать? Появляется при потере фокуса после клика, но не всегда, магия какая то
Вот тут я вряд ли помощник. Хотя 90% нужно идти в документацию Win32 API. Поройся в сторону отрисовки той же кнопки, учитывая стили Windows (так как по дефолту оно не юзает стили).
UPD: Не уверен, поможет ли, так как быстро пробежался глазами, но вот (https://stackoverflow.com/questions/148729/how-to-set-change-remove-focus-style-on-a-button-in-c).
А еще, если нажать кнопку, и форма потеряет фокус, то во круг кнопки появляется обводка даже если BorderSize = 0
Mizuwokiru
04.05.2018, 22:44
А еще, если нажать кнопку, и форма потеряет фокус, то во круг кнопки появляется обводка даже если BorderSize = 0
Как вариант, создать класс-наследник от 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 окна.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot