Как убрать рамку у кнопки windows forms

Доброго времени суток господа, у меня есть игра на которой появляются кнопки и пользователь должен успеть их нажать и за это он будет получать очки, кнопки именно появляются и исчезают, на каждой к...

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

Во время работы приложения

задан 21 июн 2016 в 9:58

O_o's user avatar

1

Лучше бы вместо картинки код прилепили для наглядности.

Если нужно убрать рамку у кнопки, то так:

button.FlatAppearance.BorderSize = 0;
button.FlatStyle = FlatStyle.Flat;

ответ дан 21 июн 2016 в 11:49

slippyk's user avatar

slippykslippyk

6,0363 золотых знака18 серебряных знаков37 бронзовых знаков

1

26 / 2 / 0

Регистрация: 26.12.2011

Сообщений: 122

1

24.02.2012, 17:46. Показов 45930. Ответов 7


Всем привет. При клике по баттон появляется черная рамка вокруг этой кнопки. Хотя бордер стоит 0.
Как можно избавится от неё?

Изображения

 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Почетный модератор

21366 / 9100 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

24.02.2012, 17:52

2

У кнопки
FlatAppearance.BorderSize = 0
FlatStyle = FlatStyle.Flat



4



26 / 2 / 0

Регистрация: 26.12.2011

Сообщений: 122

24.02.2012, 17:59

 [ТС]

3

Цитата
Сообщение от Памирыч
Посмотреть сообщение

У кнопки
FlatAppearance.BorderSize = 0
FlatStyle = FlatStyle.Flat

Да. Все именно так.



0



Vovencia

13.12.2013, 21:41

4

Цитата
Сообщение от Mr.Evgen
Посмотреть сообщение

Да. Все именно так.

Поздновато, но всё же
Эта рамка фокуса, её можно убрать, добавив на форму кнопку(name=btnFocus) размером 0*0 px(чтобы не увидеть её) — visible = true и enable = true,
а в ту кнопку, у которой рамка появляется, в обработчик клика добавить btnFocus.Focus() и фокус уйдет ей(кнопке для фокуса), а рамка исчезнет

3 / 3 / 4

Регистрация: 13.05.2016

Сообщений: 38

24.05.2016, 15:57

5

Vovencia, спасибо



0



25 / 22 / 5

Регистрация: 01.04.2013

Сообщений: 218

01.06.2017, 10:47

6

Памирыч, появляется ошибка «Ошибка CS1061 ‘Button» не содержит определения для «FlatStyle» и не удалось найти метод расширения «FlatStyle», принимающий тип «Button» в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).«.
При указании «using System.Windows.Forms;» возникает ошибка «Тип или имя пространства имен «Forms» не существует в пространстве имен «System.Windows»«.
Подскажите, что делать?



0



Эксперт .NET

5858 / 4735 / 2940

Регистрация: 20.04.2015

Сообщений: 8,361

01.06.2017, 11:13

7

Цитата
Сообщение от lino217
Посмотреть сообщение

‘Button» не содержит определения для «FlatStyle»

Содержит.

Цитата
Сообщение от lino217
Посмотреть сообщение

«Тип или имя пространства имен «Forms» не существует в пространстве имен «System.Windows»».
Подскажите, что делать?

Эта тема в разделе Windows Forms. У вас видимо проект WPF. Не все советы для WF одинаково полезны для WPF.



0



25 / 22 / 5

Регистрация: 01.04.2013

Сообщений: 218

01.06.2017, 11:32

8

Даценд, именно. Значит, я не в том разделе. Мои сообщения можно почистить здесь.



0



  • Remove From My Forums
  • Вопрос

  • Исходные данные:

    Форма. На форме Кнопка с надписью, например,  Text.

    Событие:

    При клике мышкой на кнопке, вокруг текста кнопки возникает рамка.

    Вопрос:

    Как избавиться от Рамки (или задать её цвет). :)


    SHerkh

    • Изменено

      14 октября 2018 г. 11:47

Ответы

  • Добрый день.

    Создайте свой класс кнопки, потомок от того класса кнопки который вы сейчас используете. Если это стандартная кнопка, то вот так:

    public class MyButton : Button
    {
        public MyButton() : base()
        {
            SetStyle(ControlStyles.Selectable, false);
        }
    }

    Эта кнопка не будет получать фокус, вы, насколько я понимаю, говорите именно про него.

    • Изменено
      Алексей ЛосевEditor
      16 октября 2018 г. 11:09
    • Предложено в качестве ответа
      Maksim MarinovMicrosoft contingent staff, Moderator
      16 октября 2018 г. 12:05
    • Помечено в качестве ответа
      SHerkh
      16 октября 2018 г. 14:07

I have 2 Buttons in my form. Both have background image and Flat style is «Flat».

  1. On clicking TAB key, when the focus is on button, I see solid color rectangle inner, instead of solid border I want to have dotted border in the button.

  2. When the button is clicked, some activity is going on and the button is disabled. While disabled, the button text color changes to grey. I don’t want it to change the text color. I believe this is windows standard behavior, but how do I not change the text color when the button is selected?

I can’t find any properties to set these points. What should I do to achieve the goal. Any help is highly appreciated.

I also created a custom button, but can’t get rid of the above issues.

My custom button’s paint method :

   public partial class MyButton : Button  {

    protected override void OnPaint(PaintEventArgs pevent)
    {
        base.OnPaint(pevent);
        // Set custom fore color    
        base.ForeColor = Color.FromArgb(0, 255, 254, 255);    

        // set the same forecolor even if the button is disabled  
        if (base.Enabled == false)
        {
            base.ForeColor = Color.FromArgb(0, 255, 254, 255);
        }

    }  //OnPaint method ends
  }  // class ends

UPDATED Soluiton for (1) & (2)
ADDED the following in onpaint() :

    private void init()
    {
        base.ForeColor = Color.FromArgb(0, 255, 254, 255);
        base.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 254);   // Transparent border
    }

    protected override void OnPaint(PaintEventArgs pevent)
    {
        base.OnPaint(pevent);

        if (base.ContainsFocus)
        {
            // Draw inner dotted rectangle when button is on focus
            Pen pen = new Pen(Color.Gray, 3);
            Point p = base.Location;
            pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
            Rectangle rectangle = new Rectangle(4, 4, Size.Width - 8, Size.Height - 8);
            ControlPaint.DrawFocusRectangle(pevent.Graphics, rectangle);
        }

        // Draw the string to screen
        SizeF sf = pevent.Graphics.MeasureString(displayText, this.Font, this.Width);
        Point ThePoint = new Point();
        ThePoint.X = (int)((this.Width / 2) - (sf.Width / 2));
        ThePoint.Y = (int)((this.Height / 2) - (sf.Height / 2));
        //pevent.Graphics.DrawString(displayText, Font, new SolidBrush(this.ForeColor), ThePoint);
        //pevent.Graphics.DrawString(displayText, Font, new SolidBrush(Color.FromArgb(0, 255, 254, 255)), ThePoint);
        pevent.Graphics.DrawString(displayText, Font, new SolidBrush(Color.Black), ThePoint);
        //this.Text = "";
     }//OnPaint ends

    // Avoids the inner solid rectangle shown on focus
    protected override bool ShowFocusCues
    {
        get
        {
            return false;
        }
    }

This successfully draws a dotted line in my button indicating for focus. To get rid of the default solid line I overridded ShowFocusCues().

This has helped me solve 1 completely. But with point 2, not getting 100% results. I created a property «displayText» in my MyButton class. In OnPaint(), if I give ForeColor, Color.FromARGB to SolidBrush, it doesn’t show up any text. But if I pass Color.Black, then it accepts it and shows the text in Black color. Why is it not accepting the ForeColor, or custom color and only accepting default Colors’? Where am I still going wrong for this simple task. I tried the same by implementing button_paint in the form, but I see same results.

Any idea where am I still going wrong ???

I have 2 Buttons in my form. Both have background image and Flat style is «Flat».

  1. On clicking TAB key, when the focus is on button, I see solid color rectangle inner, instead of solid border I want to have dotted border in the button.

  2. When the button is clicked, some activity is going on and the button is disabled. While disabled, the button text color changes to grey. I don’t want it to change the text color. I believe this is windows standard behavior, but how do I not change the text color when the button is selected?

I can’t find any properties to set these points. What should I do to achieve the goal. Any help is highly appreciated.

I also created a custom button, but can’t get rid of the above issues.

My custom button’s paint method :

   public partial class MyButton : Button  {

    protected override void OnPaint(PaintEventArgs pevent)
    {
        base.OnPaint(pevent);
        // Set custom fore color    
        base.ForeColor = Color.FromArgb(0, 255, 254, 255);    

        // set the same forecolor even if the button is disabled  
        if (base.Enabled == false)
        {
            base.ForeColor = Color.FromArgb(0, 255, 254, 255);
        }

    }  //OnPaint method ends
  }  // class ends

UPDATED Soluiton for (1) & (2)
ADDED the following in onpaint() :

    private void init()
    {
        base.ForeColor = Color.FromArgb(0, 255, 254, 255);
        base.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 254);   // Transparent border
    }

    protected override void OnPaint(PaintEventArgs pevent)
    {
        base.OnPaint(pevent);

        if (base.ContainsFocus)
        {
            // Draw inner dotted rectangle when button is on focus
            Pen pen = new Pen(Color.Gray, 3);
            Point p = base.Location;
            pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
            Rectangle rectangle = new Rectangle(4, 4, Size.Width - 8, Size.Height - 8);
            ControlPaint.DrawFocusRectangle(pevent.Graphics, rectangle);
        }

        // Draw the string to screen
        SizeF sf = pevent.Graphics.MeasureString(displayText, this.Font, this.Width);
        Point ThePoint = new Point();
        ThePoint.X = (int)((this.Width / 2) - (sf.Width / 2));
        ThePoint.Y = (int)((this.Height / 2) - (sf.Height / 2));
        //pevent.Graphics.DrawString(displayText, Font, new SolidBrush(this.ForeColor), ThePoint);
        //pevent.Graphics.DrawString(displayText, Font, new SolidBrush(Color.FromArgb(0, 255, 254, 255)), ThePoint);
        pevent.Graphics.DrawString(displayText, Font, new SolidBrush(Color.Black), ThePoint);
        //this.Text = "";
     }//OnPaint ends

    // Avoids the inner solid rectangle shown on focus
    protected override bool ShowFocusCues
    {
        get
        {
            return false;
        }
    }

This successfully draws a dotted line in my button indicating for focus. To get rid of the default solid line I overridded ShowFocusCues().

This has helped me solve 1 completely. But with point 2, not getting 100% results. I created a property «displayText» in my MyButton class. In OnPaint(), if I give ForeColor, Color.FromARGB to SolidBrush, it doesn’t show up any text. But if I pass Color.Black, then it accepts it and shows the text in Black color. Why is it not accepting the ForeColor, or custom color and only accepting default Colors’? Where am I still going wrong for this simple task. I tried the same by implementing button_paint in the form, but I see same results.

Any idea where am I still going wrong ???

БЛОГ НА HUSL

  • Деловая переписка на английском языке: фразы и советы
  • Принцип цикады и почему он важен для веб-дизайнеров
  • В популярных антивирусах для ПК обнаружили лазейки в защите

Автор вопроса: O_o

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

Во время работы приложения

Источник

Ответы (1 шт):

Автор решения: slippyk

Лучше бы вместо картинки код прилепили для наглядности.

Если нужно убрать рамку у кнопки, то так:

button.FlatAppearance.BorderSize = 0;
button.FlatStyle = FlatStyle.Flat;

→ Ссылка

licensed under cc by-sa 3.0 with attribution.

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

Это можно увидеть на изображении ниже. Слева кнопка с черной рамкой справа — это другая кнопка, но показывает, как должна выглядеть кнопка отмены.

Изображение 173690

01 апр. 2012, в 19:57

Поделиться

Источник

5 ответов

Я не получаю эту границу, если я устанавливаю BoderSize в 0 в разделе FlatAppearance.


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

public class NoNotifyButton: System.Windows.Forms.Button
{
    public override void NotifyDefault(bool value)
    {
    }
}

Примечание: NotifyDefault остается намеренно пустым.

Olivier Jacot-Descombes
01 апр. 2012, в 18:57

Поделиться

Вы должны создать новый класс кнопок с помощью IButtonControl и изменить NotifyDefault на false:

base.NotifyDefault(false);

Saeid Yazdani
01 апр. 2012, в 19:37

Поделиться

Мне удалось обойти это, установив для свойства TabStop значение False, а затем используя этот код в событии нажатия кнопки

private void sendBackTab()
        {
            System.Windows.Forms.SendKeys.SendWait("+{TAB}");
        }

cbyte
02 фев. 2016, в 06:43

Поделиться

Вам не нужно создавать производный класс.
Вы можете установить ForeColor таким же, как родительский элемент управления BackColor.
Как показано ниже:

btn1.ForeColor = btn1.Parent.BackColor;

Amit Lipman
21 дек. 2015, в 14:41

Поделиться

Вы можете сделать это, установив свойство кнопки «ForeColor» прозрачным

nohack12
10 июнь 2015, в 09:20

Поделиться

Ещё вопросы

  • 0Ошибка отправки JSON в POST-запросе к приложению Play
  • 0Получение информации с сайта с помощью Jsoup
  • 0Как посчитать количество строк за определенные дни
  • 1Как реализовать приложение чата в Android?
  • 1Управляет вертикальным выравниванием с сеткой слева и справа
  • 1Как изменить ссылку на JSON, который копируется в другой объект [duplicate]
  • 0Подзапрос по формату базы данных Zend
  • 1Обновление базы данных Firebase удаляет дочерние данные
  • 1Проблема с ориентацией на Android, без прокрутки
  • 0MYSQL каждая таблица должна иметь свою собственную ошибку псевдонима?
  • 1Как разделить строку ANSI с неизвестными символами, возвращенными из OpenVMS в C #
  • 1Перезапустить приложение с намерения
  • 1Попытка нам str.contains и логическая маска, но только для одного значения в Pandas
  • 0как установить кликаемый элемент списка в angularJS?
  • 0jQuery не работает на моем сайте?
  • 0Как получить доступ к `$ scope.search.value`?
  • 1Python3: как получить все квадраты и кубики равными или меньшими числа
  • 1Ошибка политики безопасности содержимого с помощью Vue JS, Webpack и JSP
  • 1Принимаете разные типы ввода массива JSON?
  • 1Подстрока с несколькими экземплярами одного и того же символа
  • 0SQL-запрос в php пустым
  • 1Sublime Text и проект Java на Mac
  • 1Исключение в потоке «main» java.lang.UnsupportedClassVersionError: org / apache / derby / derda / NetworkServerControl <Неподдерживаемый major.minor 49.0>
  • 0@RequestMapping не получает параметры и значения.
  • 0Компилятор C ++ конвертирует big-endian в little-endian [дубликаты]
  • 0JQuery Автозаполнение проблемы
  • 1Анимация изображения на Windows Phone 8
  • 1Как сделать свойство установленным один раз и не может быть изменено?
  • 0HTML / CSS страница входа проблемы со стилем в IE не работает
  • 0Заказ по ASC в случае, когда
  • 0Обнаружение жеста смахивания с скачком движения
  • 0Как получить список параметров и их тип системного вызова?
  • 0yii2 распечатывает данные из таблицы
  • 0C ++ Ошибка при преобразовании int в строку
  • 1VisualStyleRenderer возвращает ошибку для пункта меню
  • 0Почему этот SQL-запрос на создание таблицы выдает ошибку «# 1071 — Указанный ключ слишком длинный; максимальная длина ключа составляет 767 байт »
  • 0Как не вызывать директиву каждый раз, когда я перезагружаю страницу
  • 0AngularJS — снятие флажка
  • 0Показать детали товара после нажатия на элемент
  • 1Android — как накачать сложный макет и добавить в другой макет?
  • 1Доступ к службе WCF из PCL
  • 0Триггерное событие ввода в угловых
  • 0автоматическое увеличение изображения в слайдере изображений в JQuery
  • 1Попытка сохранить настройки компорта
  • 1Magento 2 вызвать пользовательскую библиотеку в select.html
  • 0jQueryUI прокручивает к началу ошибки
  • 1как настроить локальное оповещение в кордове каждый день в определенное время
  • 0Возникли проблемы с вложенным JOIN
  • 0JQPlot, JSON и ошибка «Данные не указаны»
  • 0ng-click не работает на объектах с непрозрачностью: 1;

Сообщество Overcoder

Понравилась статья? Поделить с друзьями:
  • Как убрать рамку поиска в windows 10
  • Как убрать рамку на ярлыках рабочего стола windows 10
  • Как убрать рамки окон в windows 10
  • Как убрать пробную версию minecraft windows 10 edition
  • Как убрать рамки окна windows 10