Как заставить контур фокуса нарисоваться вокруг флажка вместо текста в элементе управления флажка? - PullRequest
1 голос
/ 28 мая 2009

Обычно при переходе между элементами управления в форме, когда фокус установлен на элемент управления CheckBox, текст обводится, чтобы показать фокус.

Я использую CheckBox без текста (поэтому отображается только поле). Как заставить контур фокуса нарисоваться вокруг рамки вместо текста?

Ответы [ 2 ]

4 голосов
/ 28 мая 2009

Посмотрите - просто чтобы дать вам представление:

public class MyCheckBox : CheckBox
{
  public MyCheckBox()
  {
    // AutoSize is virtual - so you should not call it here, just demo
    AutoSize = false;
    // You need padding to make the base.OnPaint() method leaving you some space
    Padding = new Padding( 2, 2, 0, 0 );
    Size = new Size( 17, 16 );
  }

  protected override void OnPaint( PaintEventArgs pevent )
  {
    base.OnPaint( pevent );
    if( !Focused )
    {
      return;
    }
    using( var pen = new Pen( Color.Black ) )
    {
      pen.DashStyle = DashStyle.Dot;
      pevent.Graphics.DrawRectangle( pen, new Rectangle( 0, 0, 16, 15 ) );
    }
  }
}
1 голос
/ 28 мая 2009

Я думаю, вам нужно получить свой собственный "безтекстовый флажок", чтобы границы элемента управления были правильно распознаны.

Звучит сложно, но, думаю, не должно быть слишком сложно. Я создал несколько причудливых флажков, когда изучал .NET 1.x, хотя я не помню, чтобы меня беспокоил прямоугольник фокуса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...