Подтвердить что ты не робот

С# WinForms - пользовательская кнопка нежелательной границы, когда форма не выбрана

У меня возникла проблема с пользовательской кнопкой, которую я создал в С# win form. Кнопка отображается нормально, когда выбрана форма, но как только я нажимаю на кнопку, на кнопке появляется рамка. Хорошим примером того, когда это происходит, является то, что при щелчке рабочего стола, но форма все еще максимизирована, чтобы вы могли видеть ее содержимое. Изображение проблемы можно увидеть ниже:

Button border problem

Это не происходит на всех кнопках, только когда кнопка была нажата заранее (отображается только по одной кнопке за раз). Это заставило меня поверить, что это связано с сигналами фокуса кнопок, но они установлены на false. Граница установлена ​​в 0, и у меня также есть табуляция, установленная на false.

Любые предложения?

4b9b3361

Ответ 1

Когда вы имеете дело с настраиваемой кнопкой, вы должны установить:

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

Тогда, поскольку ButtonBase не поддерживает цвет рамки на Color.Transparent, вы можете решить эту проблему, установив цвет Argb:

button.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); //transparent

Ответ 2

Ответ fuex может удалить границу в теории, но есть ошибка, что иногда кнопка все равно будет иметь фокус-кий после того, как вы измените статус активации кнопки (я столкнулся с этой ошибкой в ​​.Net 4.0, и я не знаю, что ошибка исправлено или нет в более поздней версии). Чтобы исправить эту ошибку, вы должны отключить программную защиту

    protected override bool ShowFocusCues
    {
        get
        {
            //return base.ShowFocusCues;
            return false;
        }
    }