winform 自定义控件_为TabelLayoutPanel添加一个边框颜色的属性
程序员文章站
2022-03-04 11:50:56
...
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace UserControl
{
public partial class TableLayoutPanelUserControl : TableLayoutPanel
{
public TableLayoutPanelUserControl()
{
// 控件风格
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.ResizeRedraw, true);
SetStyle(ControlStyles.UserPaint, true);
//设置默认边框颜色为黑色
BorderColor = Color.Black;
}
#region 边框
/// <summary>
/// 获取或设置按钮边框颜色
/// </summary>
/// <value>The color of the focus.</value>
[Browsable(true), DefaultValue(typeof(Color), "Black"), Description("按钮边框颜色")]
[Category("Appearance")]
public Color BorderColor { get; set; }
#endregion
//Table边框的绘制需要对每一个单元格的边框进行绘制
protected override void OnCellPaint(TableLayoutCellPaintEventArgs e)
{
base.OnCellPaint(e);
var panel = this as TableLayoutPanel;
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
var rectangle = e.CellBounds;
using (Pen pen = new Pen(BorderColor))
{
pen.Alignment = PenAlignment.Center;
pen.DashStyle = DashStyle.Solid;
if (e.Row == (panel.RowCount - 1))
{
rectangle.Height -= 1;
}
if (e.Column == (panel.ColumnCount - 1))
{
rectangle.Width -= 1;
}
e.Graphics.DrawRectangle(pen, rectangle);
}
}
}
}
上一篇: WPF自定义依赖属性
下一篇: WinForm禁止窗体调整