本文共 2861 字,大约阅读时间需要 9 分钟。
作为一名开发者,经历了7年多的编程历程,我一直想打造一套独特而漂亮的自定义控件系列。于是,这一系列文章就诞生了。接下来,我将分享如何通过NuGet包轻松分发这些自定义控件的过程。
安装该控件非常简单,只需执行以下命令即可:
Install-Package HZH_Controls
对于Label控件的扩展,所需工作相对简单。主要任务是重绘划线即可。
为了实现Split Label功能,我们首先创建一个继承自Label的类 UCSplitLabel。
代码实现步骤如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Drawing;using System.ComponentModel;namespace HZH_Controls.Controls{ public class UCSplitLabel : Label { private Color lineColor = LineColors.Light; public Color LineColor { get { return lineColor; } set { lineColor = value; Invalidate(); } } private void ResetMaxSize() { using (var g = this.CreateGraphics()) { var _width = Width; var size = g.MeasureString(string.IsNullOrEmpty(Text) ? "A" : Text, Font); if (MinimumSize.Height != (int)size.Height) MinimumSize = new Size(base.MinimumSize.Width, (int)size.Height); if (MaximumSize.Height != (int)size.Height) MaximumSize = new Size(base.MaximumSize.Width, (int)size.Height); this.Width = _width; } } public UCSplitLabel() { if (ControlHelper.IsDesignMode()) { Text = "分割线"; Font = new Font("微软雅黑", 8f); } this.AutoSize = false; Padding = new Padding(20, 0, 0, 0); MinimumSize = new System.Drawing.Size(150, 10); PaddingChanged += UCSplitLabel_PaddingChanged; this.Width = 200; } private void UCSplitLabel_PaddingChanged(object sender, EventArgs e) { if (Padding.Left < 20) { Padding = new Padding(20, Padding.Top, Padding.Right, Padding.Bottom); } } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); var g = e.Graphics; g.SetGDIHigh(); var size = g.MeasureString(Text, Font); g.DrawLine(new Pen(new SolidBrush(lineColor)), new PointF(1, Padding.Top + (this.Height - Padding.Top - Padding.Bottom) / 2), new PointF(Padding.Left - 2, Padding.Top + (this.Height - Padding.Top - Padding.Bottom) / 2)); g.DrawLine(new Pen(new SolidBrush(lineColor)), new PointF(Padding.Left + size.Width + 1, Padding.Top + (this.Height - Padding.Top - Padding.Bottom) / 2), new PointF(Width - Padding.Right, Padding.Top + (this.Height - Padding.Top - Padding.Bottom) / 2)); } }} 如果你觉得这篇文章有价值,请支持一下,点击右上角的星号!欢迎在企鹅群 568015492 中来交流探讨。
希望这篇文章能为你的开发之路带来灵感!
转载地址:http://mdvkz.baihongyu.com/