Проблема с пользовательским контролем BorderStyle - PullRequest
0 голосов
/ 14 апреля 2010

Я создал пользовательский элемент управления (пользовательский элемент управления DataGridView). Я использовал пример в этой статье MSDN , чтобы установить стиль границы.

Я могу видеть выбранный стиль границы в конструкторе. Как Нет, FixedSingle или Fixed3D.

Но когда я устанавливаю стиль границы FixedSingle, граница не появляется во время выполнения. Нужно ли рисовать его вручную в методе OnPaint?

Если я использую следующий код

private BorderStyle borderStyle = BorderStyle.None;

      [Browsable (true)]
      public new BorderStyle BorderStyle
      {
         get
         {
            return borderStyle;
         }

         set
         {
            if (borderStyle != value)
            {
               if (!Enum.IsDefined(typeof(BorderStyle), value))
               {
                  throw new InvalidEnumArgumentException("value", (int)value, typeof(BorderStyle));
               }

               base.BorderStyle = value;
               UpdateStyles();
            }
         }
      }

Граница в конструкторе, но ее размер фиксирован, он меньше размера сетки. Его размер остается тем же, даже если я изменяю размер сетки, и такая же граница появляется во время выполнения.

1 Ответ

1 голос
/ 14 апреля 2010

Эта статья в КБ сильно устарела, она говорит о .NET 1.x. В .NET 2.0 UserControl получил свойство BorderStyle. Может быть установлено None, FixedSingle и Fixed3D. FixedSingle отлично работает, когда я пытаюсь, я никогда не слышал о проблеме с ним. Удалите переопределение CreateParams.


using System;
using System.ComponentModel;
using System.Windows.Forms;

class MyDgv : DataGridView {
  public MyDgv() {
    base.BorderStyle = BorderStyle.None;
  }

  [Browsable(true)]
  [DefaultValue(BorderStyle.None)]
  public new BorderStyle BorderStyle {
    get { return base.BorderStyle; }
    set {
      if (base.BorderStyle != value) {
        base.BorderStyle = value;
        UpdateStyles();
      }
    }
  }

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