Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Button, ShowDialog & Button Border (Flat style), бордер непонятно откуда 
V
    Опции темы
Kefir
Дата 9.6.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



Есть кнопка FlatStyle = Flat. BorderSize = 0. У неё прозрачный фон и натянут ПНГ в прозрачностью по краям. На клик повешен обработчик:
Код

        private void buttonLanguage_Click(object sender, EventArgs e)
        {
            language_popup lang = new language_popup(); // это форма типа меню (см. аттач справа)
            lang.Location = new Point(((Button)sender).Location.X, ((Button)sender).Location.Y + 100); // тут указывается где форма должна появится
            lang.ShowDialog(); // ну тут ясное дело форма показывается
            this.currentLanguage = lang.language; // из формы достаётся иднтификатор выбранного языка (см. скрин в аттаче и поймёте при чём тут язык %))
            lang.Dispose(); // подметаем
            this.changeLanguage(); // это не влияет на ситуацию, но для полноты картины скажу - ф-ция "переводит" надписи на контролах на выбранный язык
            ((Button)sender).BackgroundImage = global::ERD.Properties.Resources.button2a; // смена картинки кнопки с "нажатого" состояние на обычное
        }

На проблему можно посмотреть в аттаче - там скрин до нажатия кнопки и после. Как видно на картинке - сразу после нажатия на кнопку (== после появления фромы lang) вокруг кнопки появляется странный беленький бордер, который нигде не описан и не определён. Если закомментировать строку lang.ShowDialog(); то рамка не появляется.
Где рамку отключить? Она мне всю малину портит. 

PS Цвет появляющейся рамки равен Flatprance.BorderColor (now that's strange), но ведь BorderSize = 0!!!  

Это сообщение отредактировал(а) Kefir - 9.6.2006, 23:21

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  ramka.JPG 27,71 Kb
PM MAIL WWW Skype   Вверх
-ser-
Дата 10.6.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 4
Всего: 13



любая кнопка имеет не одно, а два или три состояния (например, нажатая, в фокусе, отжатая). т.е. идея такова, что тебе надо проверить проперти каждого состояния кнопки. BorderSize = 0 это размер рамки кнопки в отжатом состоянии и не в фокусе, но к твоей задаче это никакого отношения не имеет.

в твоем случае рамка перестанет появляться, если установить проперть
Код

buttonLanguage.FlatAppearance.BorderColor = //твой фон


BorderSize можно вообще не трогать.

 


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Kefir
Дата 10.6.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



Насчёт того, что кнопки имеют много состояний я знаю. У меня на MouseEnter, MouseLeave, MouseDown & MouseUp повешены события (смена фонового изображения). Вот пример:
Код

        private void buttonDown_MouseUp(object sender, MouseEventArgs e)
        {
            ((Button)sender).BackgroundImage = global::ERD.Properties.Resources.arrow4b;
        }

Что касается проверки каждого состояния - должно быть всё нормального, т.к. это не единственная кнопка у меня... однако это единственная кнопка в открытием другой формы. На всех остальных кнопках точно такой-же код, но рамки нет... хотя на всякий случай я перепроверю.

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

Если надо могу запостит InitializeComponent... 
PM MAIL WWW Skype   Вверх
-ser-
Дата 12.6.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 4
Всего: 13



да, с обычной кнопкой я тоже все перепробовал, так ничего и не вышло.

но вышло не с обычной, а именно, вместо Button используй CheckBox. Только поставь его Appearance в Button.

проверил, работает так как ты хочешь. 

наверно, я даже рад больше чем ты, Kefir smile   


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Kefir
Дата 12.6.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



ура! работает! благодарю покорнейше за совет.

(и всё равно не понимаю почему эта рамочка там ызает, но это не важно уже...) 
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0953 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.