Как установить / изменить / удалить стиль фокуса на кнопке в C #? - PullRequest
23 голосов
/ 29 сентября 2008

У меня есть пара кнопок, которые я изменил, как они выглядят. Я установил их в виде плоских кнопок с фоном и настраиваемой рамкой, чтобы они выглядели красиво и больше не походили на обычные кнопки (на самом деле они теперь выглядят как кнопки Office 2003 ;-). Кнопки имеют границу в один пиксель.

Однако, когда кнопка выбрана (фокусировка осуществляется нажатием кнопки или действия клавиатуры, например нажатия клавиши табуляции), кнопка внезапно получает дополнительную рамку вокруг нее того же цвета, поэтому она становится двухпиксельной рамкой. Более того, когда я отключаю однопиксельную границу, кнопка не получает однопиксельную границу в фокусе.

В сети этот вопрос часто задают, например, «Как отключить фокус на кнопке», но это не то, чего я хочу: фокус все еще должен существовать , просто не отображать как сейчас.

Есть предложения? : -)

Ответы [ 12 ]

0 голосов
/ 29 сентября 2008

Рассмотрите возможность реализации собственного кода рисования для кнопки. Таким образом, у вас есть полный контроль. В прошлом я реализовывал свой собственный производный элемент управления, который настраивал рисование моей кнопки и реализовывал все характеристики кнопки для моих целей, но вы должны иметь возможность переопределить рисование кнопки и сделать это самостоятельно, тем самым контролируя, как она рисует в каждом состоянии. в том числе при фокусировке.

0 голосов
/ 29 сентября 2008

Конечно, вы можете нарисовать кнопку самостоятельно. Один из государственных флагов сфокусирован.

Так что в случае события рисования, если флаг сфокусирован, идите вперед и нарисуйте кнопку так, как вам нравится, в противном случае просто передайте ее базовому методу.

...