Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка Windows Forms > Button, ShowDialog & Button Border (Flat style) |
Автор: Kefir 9.6.2006, 23:04 | ||
Есть кнопка FlatStyle = Flat. BorderSize = 0. У неё прозрачный фон и натянут ПНГ в прозрачностью по краям. На клик повешен обработчик:
На проблему можно посмотреть в аттаче - там скрин до нажатия кнопки и после. Как видно на картинке - сразу после нажатия на кнопку (== после появления фромы lang) вокруг кнопки появляется странный беленький бордер, который нигде не описан и не определён. Если закомментировать строку lang.ShowDialog(); то рамка не появляется. Где рамку отключить? Она мне всю малину портит. PS Цвет появляющейся рамки равен Flatprance.BorderColor (now that's strange), но ведь BorderSize = 0!!! |
Автор: -ser- 10.6.2006, 09:32 | ||
любая кнопка имеет не одно, а два или три состояния (например, нажатая, в фокусе, отжатая). т.е. идея такова, что тебе надо проверить проперти каждого состояния кнопки. BorderSize = 0 это размер рамки кнопки в отжатом состоянии и не в фокусе, но к твоей задаче это никакого отношения не имеет. в твоем случае рамка перестанет появляться, если установить проперть
BorderSize можно вообще не трогать. |
Автор: Kefir 10.6.2006, 11:33 | ||
Насчёт того, что кнопки имеют много состояний я знаю. У меня на MouseEnter, MouseLeave, MouseDown & MouseUp повешены события (смена фонового изображения). Вот пример:
Что касается проверки каждого состояния - должно быть всё нормального, т.к. это не единственная кнопка у меня... однако это единственная кнопка в открытием другой формы. На всех остальных кнопках точно такой-же код, но рамки нет... хотя на всякий случай я перепроверю. Установить BorderColor к сожалению не представляется возможным из-за фона формы (т.е. фон - это картинка, а значит там нет единого цвета - там раные разводы и рюшечки, которые наваял дизайнер). Первая мысль у меня была - поставить прозрачный цвет, однако BorderColor такой возможности не поддерживает... Если надо могу запостит InitializeComponent... |
Автор: -ser- 12.6.2006, 14:16 |
да, с обычной кнопкой я тоже все перепробовал, так ничего и не вышло. но вышло не с обычной, а именно, вместо Button используй CheckBox. Только поставь его Appearance в Button. проверил, работает так как ты хочешь. наверно, я даже рад больше чем ты, Kefir ![]() |
Автор: Kefir 12.6.2006, 18:08 |
ура! работает! благодарю покорнейше за совет. (и всё равно не понимаю почему эта рамочка там ызает, но это не важно уже...) |