Это год, но у меня была та же проблема, что и в соч. В моем случае это был пользовательский элемент управления, на котором была одна метка (пристыкованная к заливке) (у него есть другие функции за кулисами - это элемент управления календарем и всплывающее окно выбора даты - не стандартное) на любой панели. (popunder) или форма (popup)).
Проблема заключалась в том, что UserControls действительно предназначены для использования в качестве контейнеров и сопротивляются фокусу (отталкивая его на дочерние элементы управления) - поскольку метка является единственным дочерним элементом управления, она останавливает получение UserControl фокусировки. Использование только для чтения TextBox является плохой заменой, так как ему не хватает вертикального выравнивания и он должен быть многострочным, чтобы измерить высоту.
Причина, по которой я добавляю следующее в качестве ответа здесь, заключается в том, что это возможно (извините, ребята, которые сказали, что это не так), и я нашел этот пост, и многим он понравился, но мне было мало помощи, когда я смотрел. В любом случае, способ сделать это - переопределить Label и установить SetStyle - также OnPaint для рисования прямоугольника фокуса (я нарисовал вручную, так как DrawFocusRectangle, похоже, ничего не делал) - как показано ниже:
internal class SelectableLabel: Label
{
public SelectableLabel():base()
{
SetStyle(ControlStyles.Selectable, true);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//ControlPaint.DrawFocusRectangle(e.Graphics, ClientRectangle);
if (!Focused) return;
if (BorderStyle == BorderStyle.Fixed3D)
{
e.Graphics.DrawLines(Pens.CadetBlue, new[] { new Point(1, Height - 1), new Point(1, 1), new Point(Width - 1, 1) });
e.Graphics.DrawLines(Pens.Aquamarine, new[] { new Point(2, Height - 1), new Point(Width - 1, Height - 1), new Point(Width - 1, 2) });
}
else
{
e.Graphics.DrawRectangle(Pens.Aquamarine, 0, 0, Width - 1 , Height - 1 );
}
}
}
Я не беспокоюсь о том, правильно ли это делать (с точки зрения пуристов), но есть веские основания, позволяющие элементу управления выходом (например, метке) иногда фокусироваться.