Вот тут я вряд ли помощник. Хотя 90% нужно идти в документацию Win32 API. Поройся в сторону отрисовки той же кнопки, учитывая стили Windows (так как по дефолту оно не юзает стили).
UPD: Не уверен, поможет ли, так как быстро пробежался глазами, но вот.
А еще, если нажать кнопку, и форма потеряет фокус, то во круг кнопки появляется обводка даже если BorderSize = 0
А еще, если нажать кнопку, и форма потеряет фокус, то во круг кнопки появляется обводка даже если BorderSize = 0
Как вариант, создать класс-наследник от Button и в конструкторе или в OnPaint`е вызвать:
SetStyle(ControlStyles.Selectable, false);
В этом случае кнопке нельзя будет присвоить фокус, т.е. табом теперь ее не выбирает.
UPD: Если же фокус нужен, то есть еще вариант:
Создаем класс-наследник от Button и переопределяем свойство ShowFocusCues на возвращение false:
protected override bool ShowFocusCues => false;
А в неактивном окне применяется цвет рамки, поэтому задаем цвет рамки прозрачный. Через панель свойств это нельзя сделать почему-то, поэтому идем в код и задаем цвет рамки вручную:
В этом случае ShowFocusCues запретит показывать рамку вокруг текста при фокусе, а прозрачный цвет поможет визуально избавиться от рамки при потере фокуса окна (хотя сама рамка остается).
Можно еще попробовать поколдовать с GotFocus кнопки и Deactivate окна.