usercontrol BorderStyle的问题

时间:2010-04-14 10:47:44

标签: .net user-controls

我创建了一个用户控件(自定义DataGridView控件)。我使用了this MSDN article中的示例来设置边框样式。

我能够在设计师中看到所选的边框样式。像None,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 个答案:

答案 0 :(得分:1)

那篇KB文章已经过时了,它谈到了.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();
      }
    }
  }

}