Как удалить границу кнопки после нажатия за пределами формы C #? - PullRequest
0 голосов
/ 14 декабря 2018

Я сделал простую кнопку, но когда я нажимаю вне формы выигрыша, моя кнопка получает черную рамку.Кстати, я установил BorderSize в «0», и он отлично работает, когда я нажимаю внутри своей формы.

this.button.FlatAppearance.BorderSize = 0;

Вот так это выглядит.

example

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

кажется проблема фокуса.Попробуйте сбросить фокус, когда курсор покинет элемент управления.

0 голосов
/ 14 декабря 2018

Добавьте эти строки кода в событие загрузки форм.

 btn.FlatStyle = FlatStyle.Flat;//You can also use the popup flat style
 btn.FlatAppearance.BorderColor = btn.Parent.BackColor;
 btn.FlatAppearance.BorderSize = 0;
0 голосов
/ 14 декабря 2018

Один простой обходной путь - установить FlatAppearance.BorderColor для кнопки на Parent.BackColor:

this.button1.FlatAppearance.BorderColor = this.button1.Parent.BackColor;

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

Вы также можете выполнить ту же операцию в пакете, используя событие HandleCreated , и все кнопки (с FlatStyle = FlatStyle.Flat) подписываются на событие в формеконструктор:

public Form1()
{
    InitializeComponent();
    foreach (Button button in this.Controls.OfType<Button>().Where(btn => btn.FlatStyle == FlatStyle.Flat))
    {
        button.HandleCreated += (s, e) => { 
            button.FlatAppearance.BorderColor = button.Parent.BackColor; 
        };
    }
}
...