我创建了一个用户控件(自定义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();
}
}
}
设计师的边框,但它的大小是固定的,它小于网格大小。即使我调整网格大小并且在运行时出现相同的边框,它的大小也保持不变。
答案 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();
}
}
}
}