Ну, я думаю, что нашел какое-то решение. Решение устраняет проблему с прямоугольником фокуса, но не отвечает на вопрос о том, что не так с опубликованным исходным кодом. Это мое понимание вопроса о прямоугольнике ... пожалуйста, не стесняйтесь поправлять меня, если я что-то неправильно понял.
Может показаться, что существует два типа пунктирных / пунктирных прямоугольников: прямоугольники, которые указывают, что элемент управления сфокусирован, и прямоугольники, которые указывают, что элемент управления является элементом управления по умолчанию. Обе эти ситуации требуют создания пользовательского класса для элемента управления. В моем случае интересующим элементом управления была RadioButton. Итак, вот код:
public class NoFocusRadioButton: RadioButton
{
// ---> If you DO NOT want to allow focus to the control, and want to get rid of
// the default focus rectangle around the control, use the following ...
// ... constructor
public NoFocusRadioButton()
{
// ... removes the focus rectangle surrounding active/focused radio buttons
this.SetStyle(ControlStyles.Selectable, false);
}
}
или используйте следующее:
public class NoFocusRadioButton: RadioButton
{
// ---> If you DO want to allow focus to the control, and want to get rid of the
// default focus rectangle around the control, use the following ...
protected override bool ShowFocusCues
{
get
{
return false;
}
}
}
Я использую первый (код конструктора) подход, чтобы не допустить фокус ввода.
Все это прекрасно работает для решения проблемы прямоугольника, но я до сих пор не понимаю, почему исходный код не работал.