效果图:
实现:
第一步:添加一个GridControl,设置“在父容器中停靠”,添加表格的数据源
第二步:定义MyXPaint类
public class MyXPaint : XPaint
{
public override void DrawFocusRectangle(Graphics g, Rectangle r, Color foreColor, Color backColor)
{
if (!CanDraw(r)) return;
//定义用于填充图形形状的颜色
Brush hb = Brushes.Red;
//定义一个宽度为2,高为r.Height-2,起始坐标为r.x和r.y的矩形,并且填充进图形对象
g.FillRectangle(hb, new Rectangle(r.X, r.Y, 2,r.Height - 2));
//定义一个宽度为r.Width,高为2,起始坐标为r.x和r.y的矩形,并且填充进图形对象
g.FillRectangle(hb, new Rectangle(r.X, r.Y, r.Width - 2,2));
//定义一个宽度为2,高为r.Height-2,起始坐标为r.Right-2和r.y的矩形,并且填充进图形对象
g.FillRectangle(hb, new Rectangle(r.Right - 2, r.Y, 2, r.Height - 2));
//定义一个宽度为r.Width,高为2,起始坐标为r.x和r.Bottom-2的矩形,并且填充进图形对象
g.FillRectangle(hb, new Rectangle(r.X, r.Bottom - 2, r.Width, 2));
//最后在表格单元格中拼凑出一个红色的边框
}
}
第三步:在Form的Load事件中调用第二步中定义的类
FieldInfo fi = typeof(XPaint).GetField("graphics", BindingFlags.Static | BindingFlags.NonPublic);
fi.SetValue(null, new MyXPaint());