Как убрать фон кнопки visual studio
Чтобы удалить поведение по умолчанию MouseOver по умолчанию на Button , вам необходимо изменить ControlTemplate . Изменение вашего определения Style следующим образом должно сделать трюк:
EDIT: это на несколько лет позже, но вы действительно можете установить кисть границы внутри границы, которая находится там , Idk, если бы это было указано, но похоже, что это не было .
Это работает, однако кнопка Borders исчезнет! Если бы поставить & lt; BorderBorderBrush = & quot; DarkGray & quot; BorderThickness = & Quot; 1 & Quot; & GT; элемент вокруг кнопки. – Venugopal M 6 March 2015 в 09:16
@ C-F, причина этого в стандарте . Стиль кнопки имеет триггеры внутри ControlTemplate , поэтому они переопределяют триггеры Style OP. – torvin 22 September 2015 в 02:01
@torvin Это кажется таким обратным! Почему пользовательский триггер должен быть переопределен по умолчанию? Я понимаю иерархию, ControlTemplate выше стиля, но я не понимаю, почему это так сложно переопределить базовые настройки, подобные этим. – Fuselight 4 November 2015 в 05:11
@Fuselight, триггер внутри ControlTemplate в основном говорит: «Покрасьте границу в соответствии с цветом Background . И если мышь над кнопкой - нарисуйте эту границу вместо этого цвета », в то время как в стиле вы имеете доступ только к цвету Background , а не к базовому цвету границы. Я вижу, что вы указываете, что стиль WPF оставляет желать лучшего . – torvin 4 November 2015 в 05:25
Это хорошо сработало для меня.
Стиль кнопки
Кнопка
Примечания
- Кнопка отображает маленький синий крест, как и тот, который использовался для закрытия окна.
- Установив фон сетки на «Прозрачный», он добавляет hittest, что означает, что если мышь в любом месте над кнопкой, тогда это сработает. Опустите этот тег, и кнопка загорится, если мышь находится над одной из векторных линий в значке (это не очень удобно).
Это отличный ответ, но как насчет изменения цвета Stroke при наведении на Border , но без зависания над Path ? – Nate 5 August 2016 в 15:33
В вашем ресурсном словаре определите шаблон управления для вашей кнопки, такой как этот:
в вашем XAML, который вы можете использовать шаблон выше для вашей кнопки, как показано ниже:
Определите свою кнопку
Надеюсь, что это поможет
все, что вам нужно сделать, это вызовите стиль.
Все ответы пока включают полную замену поведения кнопки по умолчанию чем-то другим. Тем не менее, IMHO полезно и важно понять, что можно изменить только ту часть, которую вы заботитесь о , отредактировав существующий шаблон по умолчанию для элемента XAML.
В случай обращения с эффектом наведения на кнопку WPF, изменение внешнего вида в элементе WPF Button вызвано Trigger в стиле по умолчанию для Button , который основан на свойстве IsMouseOver и устанавливает свойства Background и BorderBrush элемента верхнего уровня Border в шаблоне управления. Фон элемента Button находится под фоном элемента Border , поэтому изменение свойства Button.Background не мешает видеть эффект зависания.
С некоторыми усилиями вы можете отменить это поведение с помощью ваш собственный сеттер, но поскольку элемент, который вам нужно затронуть, находится в шаблоне, а не напрямую доступен в вашем собственном XAML, этот подход будет сложным, а IMHO слишком сложным.
Еще один вариант - использовать как Content для Button , а не Background . Если вам нужен дополнительный контент по графике, вы можете объединить их с Grid в качестве объекта верхнего уровня в контенте.
Однако, если вы буквально просто хотите полностью отключить эффект наведения (скорее чем просто сокрытие), вы можете использовать Visual Studio XAML Designer:
- Во время редактирования вашего XAML выберите вкладку «Дизайн» .
- На вкладке «Дизайн» найдите кнопку, для которой вы хотите отключить эффект.
- Щелкните правой кнопкой мыши эту кнопку и выберите «Редактировать шаблон / Изменить Копия . ". Выберите в подсказке, где вы хотите разместить новый ресурс шаблона. Это будет ничего не делать, но на самом деле Дизайнер добавит новые ресурсы, где вы сказали, и изменил элемент кнопки, чтобы ссылаться на стиль, который использует эти ресурсы в качестве шаблона кнопки.
- Теперь вы может пойти редактировать этот стиль. Самое простое - удалить или закомментировать (например, Ctrl + E, C) элемент
. . Конечно, вы можете внести любые изменения в желаемый шаблон.
Когда вы закончите, стиль кнопки будет выглядеть примерно так:
(Примечание: вы можете опустить квалификацию пространства имен p: XML в фактическом коде & hellip; я предоставляю их здесь только потому, что форматировщик XML-кода Stack Overflow путается элементами , которые не имеют полностью квалифицированного имени с пространством имен XML.)
Если вы хотите применить тот же стиль к другим кнопкам, вы можете просто щелкнуть их правой кнопкой мыши и выбрать «Редактировать шаблон / применить ресурс» и выбрать стиль, который вы только что добавили для первой кнопки. Вы даже можете сделать стиль стилем по умолчанию для всех кнопок, используя обычные методы применения стиля по умолчанию к элементам в XAML.
Приносим извинения. Запрошенное содержимое было удалено. Вы будете автоматически перенаправлены через 1 секунду.
Лучший отвечающий
Вопрос
Мне нужно сделать label.BackColor, что бы он был прозрачный. Ну было видно что бы за ним, например форму.
Ответы
на форме label1
но лейбл за кнопкой не виден
Все ответы
фон для формы установили?
другие контролы не будут видны сквозь лейбл
другие контролы не будут видны сквозь лейбл
Ау! Мне кто-то поможит!? Есть идеи почему у меня не так? Может я не туда код вставил? Так скажите куда.
на форме label1
Всё норм код работает, там просто баг был какойта. После перезапука винды всё норм:)
А что если мне надо поверх кнопки label положить? Что мне сделать что бы label1 был прозрачным, а кнопка нет?
но лейбл за кнопкой не виден
Центры разработки
Обучение
Сообщество
Свяжитесь с нами
Программы
© 2022 Microsoft
Я пытаюсь сделать настраиваемую кнопку для моей формы (которая имеет FormBorderStyle = none) с помощью Visual Studio 2005. У меня есть изображения кнопок с тремя состояниями в ImageList, связанном с кнопкой.
Все работает, но есть одна загвоздка. Всякий раз, когда я перемещаю указатель мыши и наведите курсор на кнопку, я получаю действительно раздражающий серый фон.
Как я могу это удалить?
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 8
Серый фон обусловлен настройкой «System.Windows.Forms.FlatStyle.Flat», это поведение по умолчанию, так как при наведении курсора на кнопку необходимо выделить кнопку. Чтобы устранить это, вам, возможно, придется написать собственный класс кнопки, унаследовать от исходной кнопки и сделать для этого некоторую пользовательскую раскраску.
Кстати, вместо того, чтобы устанавливать "включено" в MouseHover, вы должны сделать это в MouseEnter. MouseEnter и MouseLeave - это пара, которая указывает, находится ли мышь внутри кнопки или нет, и запускается один раз при входе / выходе. Где, как MouseHover, срабатывает всякий раз, когда мышь перемещается внутри кнопки, что создает ненужную повторяющуюся настройку «включено».
Спасибо за подсказку MouseEnter, которая решила мою проблему с медленным изменением цвета BackColor!
Я решил это с помощью метки вместо кнопки.
PS: обратите внимание, что теперь я использую кнопку с двумя состояниями, а не с тремя. Это предназначено (я знаю, что еще могу использовать три).
создать событие Mouse Enter, которое приведено ниже.
затем назначьте это событие всем кнопкам.
Вы также можете остановить изменение цвета кнопки, сняв флажок IsHitTestVisible в разделе Свойства кнопки> общий> IsHitTestVisible. Может, это тоже поможет .
У меня есть одно предложение. Создайте свой собственный класс кнопки, производный от формы Button. Затем переопределите в нем событие MouseEnter. Просто удалите код для вызова базовой реализации.
PS: вы не сможете использовать событие MouseEnter вне производного класса (например, проекта, использующего этот элемент управления)
Привет, вы просто можете легко применить эти изменения к своей кнопке, используя эти две строки кода.
Я хотел сделать мою форму windows прозрачной, поэтому удалил границы, элементы управления и все, оставив только поле формы, затем я попытался BackColor и TransparencyKey прозрачным, но это не сработало, поскольку BackColor не будет принимать прозрачный цвет. После поиска вокруг я нашел это в msdn:
Unhappyly это не работает. Я все еще получаю серый или любой другой выбранный цвет фона.
все, что я хотел сделать, это иметь Windows форма прозрачная, чтобы я мог использовать фоновое изображение, которое будет действовать, как если бы это была моя форма windows.
Я искал здесь и видел много тем в отношении непрозрачности, которая не то, что я ищу, а также видел некоторые в отношении этого метода, который я пытался, но еще не нашел ответа.
надеюсь, кто-нибудь может осветить мой путь.
изображение удалено, поскольку проблема решена
способ, который я использовал раньше, - использовать дикий цвет (цвет, который никто в здравом уме не будет использовать) для BackColor, а затем установить ключ прозрачности на это.
простым решением для получения прозрачного фона в форме windows является перезапись OnPaintBackground способ такой:
(заметьте, что тег base.OnpaintBackground(e) удаляется из функции)
в моем случае, я сделал это, написав следующий код:
вот мое решение:
в конструкторах добавьте эти две строки:
в вашей форме добавьте этот метод:
будьте осторожны, эта форма не только полностью прозрачна внутри рамки, но вы также можете щелкнуть по ней. Тем не менее, было бы здорово нарисовать на нем изображение и сделать форму способной перетаскиваться повсюду, чтобы создать пользовательскую форму.
мое решение было очень рядом с Джоэлом (не Этертон, просто Джоэл):
поэтому убедитесь, что вы используете один и тот же BackColor везде и установите этот цвет как TransparencyKey.
Я пробовал почти все это. но все равно не получилось. Наконец, я обнаружил, что это из-за проблем 24bitmap. Если вы попробовали растровое изображение, которое меньше 24bit. Большинство из вышеперечисленных методов должны работать.
то, что работает для меня, использует определенный цвет вместо реальной способности .jpg для представления прозрачности.
Итак, что вы можете сделать, это взять фоновое изображение и нарисовать прозрачную область определенным цветом (пурпурный всегда казался мне подходящим. ).
установите изображение как форму BackgrounImage свойство и установить цвет в качестве формы TransparencyKey . Нет необходимости в изменениях стиля элемента управления и нет необходимости в BackColor.
я попробовал это правильно теперь и это сработало для меня.
Должно ли это иметь какое-либо отношение к "непрозрачности" формы / ее фона ? Вы пробовали непрозрачность = 0
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
Как поменять цвет фона элементов в Windows Forms
В данной статье мы разберем несколько вариантов изменения цвета элементов Windows Forms на примере фона формы Form1 и прочих компонентов.
Способ №1. Изменение цвета в свойствах элемента.
Для многих это самый легкий способ изменения цветовой палитры элементов, так как не надо писать код, всё визуализировано и интуитивно понятно.
Для этого надо выбрать элемент формы (или саму форму) и в «Свойствах» найти вкладку «Внешний вид». Нас интересует строка BackColor:
Здесь имеется большое количество цветовых схем и их визуальных представлений.
Выберем для примера какой-либо из цветов, чтобы изменить фон формы:
Легко, незамысловато, понятно.
Следующие способы будут производиться в коде.
Способ №2. Изменение цвета, используя структуру Color.
Это самый простой способ среди кодовых вариаций.
«На пальцах» это выглядит так:
Если мы захотим закрасить фон формы в зеленый цвет, то строка кода будет выглядеть вот так:
При запуске форма будет выглядеть так:
Если понадобится изменить цвет, например, кнопки Button на тёмно-бордовый, код будет таким:
Данный способ прост тем, что требуется лишь написать название цвета, которых также большое количество.
Зачастую этих двух способов хватает для оформления программы. Если же нужна более гибкая настройка или же среди стандартных цветов не имеется необходимых, можно воспользоваться способами, описанными ниже.
Способ №3. Изменение цвета, используя метод Color.Argb.
Этот и следующий методы позволят генерировать нужный цвет, используя значения цветового канала RGB.
RGB — это цветовая модель, которая синтезирует цвета, используя смешивание трёх основных цветов (Красного — Red, Зеленого — Green, Синего- Blue) с чёрным, вследствие чего получаются новые цвета и оттенки. Зависит получаемый цвет от интенсивности этих трёх основных цветов. Если смешать Красный, Зеленый и Синий в максимальной насыщенности, получится белый цвет. Если не смешивать их, то остаётся чёрный.
Данный способ позволяет регулировать интенсивность трех этих цветов, при смешивании которых и получится нужный нам оттенок.
Интенсивность в числовой форме для удобства применения обозначается от 0 (минимальная интенсивность) до 255(максимальная интенсивность). Все три цвета можно «варьировать» по этой шкале.
Словесно это выглядит вот так:
Названиеэлементаформы.BackColor = Color.FromArgb(Насыщенность красного, Насыщенность зеленого, Насыщенность синего);
Чтобы закрасить фон программы в чёрный цвет, используя данный метод, надо написать вот такую строку:
Читайте также: