-
2021-07-25 09:25:40
标记
类
//控件在工具箱的提示 [Description("此控件可以任意调整高度")] //控件在工具箱的图标 [ToolboxBitmap(typeof(System.Windows.Forms.TextBox))] //控件作为一个容器,类似Panel [Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] //定义默认的事件 [DefaultEvent("DblClick")]
标记
属性
//在属性窗口修改属性后,是否在窗体设计器生成代码,Visible--生成,Hidden--不生成 [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] //在属性窗口下侧的描述 [Description("标题")] //在属性窗口的分类 [Category("自定义")] //是否在属性窗口中显示,默认不加此特性就是在属性窗口显示 [Browsable(true)] //属性的默认值 [DefaultValue("")]
更多相关内容 -
c# Winform 自定义控件 缩放不卡顿。最大可放大至65535。ROI绘制 矩形 圆形 ROI修改
2022-05-06 14:19:42前面通过Picturebox控制图片缩放平移,操作很顺滑,但是放大的时候发现一个问题,放大超过一定尺寸之后画面会非常的卡,可能重绘的面积比较大。 解决思路:放大的过程中,如果图像有超出窗口的部分,则把这部分图像... -
c# Winform 自定义控件 8K大图显示,无限比例放大。ROI绘制 矩形 圆形 任意多边形,ROI修改
2022-05-06 11:08:45前面解决了缩放的问题,但用PictureBox显示图像时,受到控件大小的限制,图像的最大放大长宽是受限的:65535 解决思路:通过虚拟一个PictureBox画布 矩形画布 Canvas RectangleF类型,长宽无限制。 经过测试,显示... -
总结的winform自定义控件开发教程
2014-12-26 14:50:24网络大神总结的控件开发资料,非常有参考意义,详细而又全面,手把手学习,适合控件开发进阶者使用 -
winform自定义控件
2016-04-18 11:48:45winform自定义控件源码 -
Winform自定义控件开发
2011-12-20 15:27:52三种不同方式的控件开发,图文并茂,欢迎大家使用. -
【自定义控件】c#winform自定义控件实现标签控件
2022-03-22 01:14:02介绍首先我们设计这个控件的时候要明白控件是怎样交互的, 熟悉b站的小伙伴应该知道 ,我们上传视频的时候会去选择标签 ,我们输入标签文本 按下回车就代表该标签已经添加成功了,效果图如下!控件...介绍
首先我们设计这个控件的时候要明白控件是怎样交互的, 熟悉b站的小伙伴应该知道 ,我们上传视频的时候会去选择标签 ,我们输入标签文本 按下回车就代表该标签已经添加成功了,效果图如下!
控件拆分
我们首先拆分一下该控件, 整个控件可以看成是一个已选标签界面和一个文本输入界面。
已选标签界面里面是有很多小标签,一个一个组成的。
一:那么我们首先实现已选标签界面里面标签控件
标签控件我是继承的UserControl 然后再userControl界面添加一个label控件来模拟关闭按钮。
public partial class TagControl : BaseRadiusUserControl
然后写 一个定义的关闭事件
[Description("关闭事件"), Category("自定义")] public event EventHandler CloseClick;
在label控件点击X去触发该关闭事件
private void close_Click(object sender, EventArgs e) { CloseClick?.Invoke(this,e); }
然后写一个赋值的方法 当文本值大于2的时候去调整控件的大小。
public void SetText(string text) { this.Content = text; if (text.Length > 1) { this.Width = 60 + (text.Length - 1) * 20; } }
这样小标签控件就实现了!
二:然后我们去实现 标签的整体控件
上半部分是一个已选标签控件, 下半部分是一个文本框。
我们新建一个标签控件继承usercontrol
上半部分使用flowlaoutpanel控件, 下半部分使用文本框。
我们在文本框的KeyUp事件中添加小控件, 添加完成后清空文本框。
if (e.KeyCode == Keys.Enter) { TagControl tagControl = new TagControl(); tagControl.SetText(txtFlag.Text); tagControl.CloseClick += TagControl_CloseClick; flowTag.Controls.Add(tagControl); txtFlag.Text = ""; }
我们在动态加载小标签控件的时候写上close关闭事件
private void TagControl_CloseClick(object sender, EventArgs e) { TagControl tagControl = (TagControl)sender; flowTag.Controls.Remove(tagControl); }
实际效果
这样我们仿b站标签控件就实现成功了!
如果觉得我的文章还不错,请点赞并给个关注,谢谢各位看官姥爷!
技术群:添加小编微信并备注进群
小编微信:mm1552923
公众号:dotNet编程大全
-
c#Winform自定义控件-目录
2019-09-06 20:59:24入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git 如果...官网:
前提
入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。
GitHub:https://github.com/kwwwvagaa/NetWinformControl
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git
如果觉得写的还行,请点个 star 支持一下吧
~~~持续增加中~~~~~
自定义控件
(四十七)c#Winform自定义控件-树表格(treeGrid)
(六十五)c#Winform自定义控件-思维导图/组织架构图(工业)
(八十四)c#Winform自定义控件-导航菜单(类Office菜单)
自定义窗体
(二十五)c#Winform自定义控件-有确定取消的窗体(一)
(二十六)c#Winform自定义控件-有确定取消的窗体(二)
效果图
-
Winform自定义日历控件
2020-12-25 12:03:36Winform自定义日历控件,做日历相关业务最需要的,比如考勤、日程安排、任务计划等等 -
WinForm自定义控件应用实例
2020-12-31 13:44:08C#的WinForm有一些控件具备自绘的功能,这就意味着你可以对这些控件进行自绘,可以起到意想不到的视觉效果。本文所述的以下控件就是通过一些简单的控件转变过来的。具体示例如下: 1、横向选项卡重绘: 这里的... -
winform自定义控件非常大全
2022-05-27 17:00:12winform自定义控件非常大全 -
c#自定义控件实例大全,.NET自定义控件实例大全,WINFORM自定义控件实例大全
2017-08-31 19:53:52c#自定义控件实例大全,.NET自定义控件实例大全,WINFORM自定义控件实例大全 -
WinForm自定义控件
2016-11-09 12:42:59资源中包含winform datagridview编程、WinForm开发系列 - TreeView、对话框全接触、无边框窗体移动、类似于WinRAR压缩进度条、托盘控件使用、字体下拉框(枚举本机上的所有字体,填充到下拉框)、消息任务栏、微软提供... -
c# Winform自定义控件-仪表盘功能
2021-01-21 18:44:14入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git NuGet ... -
(二)c#Winform自定义控件-按钮
2019-09-06 21:09:41(二)c#Winform自定义控件-按钮 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:...(二)c#Winform自定义控件-按钮
前提
入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。
GitHub:https://github.com/kwwwvagaa/NetWinformControl
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git
如果觉得写的还行,请点个 star 支持一下吧
目录
https://blog.csdn.net/kwwwvagaa/article/details/100586547
用处及效果
用处:按钮有什么用,我想我不用解释了吧
效果:
准备工作
该控件将继承基类控件UCControlBase,如果你还对UCControlBase不了解的下,
请移步 (一)c#Winform自定义控件-基类控件 查看
首先我们了解下要做的是什么,我们需要做一个可以自定义填充颜色,有圆角边框,有角标的按钮
开始
添加一个用户控件,命名为UCBtnExt ,继承 UCControlBase
先来看看我们按钮需要支持的属性吧
#region 字段属性 [Description("是否显示角标"), Category("自定义")] public bool IsShowTips { get { return this.lblTips.Visible; } set { this.lblTips.Visible = value; } } [Description("角标文字"), Category("自定义")] public string TipsText { get { return this.lblTips.Text; } set { this.lblTips.Text = value; } } private Color _btnBackColor = Color.White; [Description("按钮背景色"), Category("自定义")] public Color BtnBackColor { get { return _btnBackColor; } set { _btnBackColor = value; this.BackColor = value; } } private Color _btnForeColor = Color.Black; /// <summary> /// 按钮字体颜色 /// </summary> [Description("按钮字体颜色"), Category("自定义")] public Color BtnForeColor { get { return _btnForeColor; } set { _btnForeColor = value; this.lbl.ForeColor = value; } } private Font _btnFont = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); /// <summary> /// 按钮字体 /// </summary> [Description("按钮字体"), Category("自定义")] public Font BtnFont { get { return _btnFont; } set { _btnFont = value; this.lbl.Font = value; } } /// <summary> /// 按钮点击事件 /// </summary> [Description("按钮点击事件"), Category("自定义")] public event EventHandler BtnClick; private string _btnText; /// <summary> /// 按钮文字 /// </summary> [Description("按钮文字"), Category("自定义")] public string BtnText { get { return _btnText; } set { _btnText = value; lbl.Text = value; } } #endregion
有了属性是不是就更明了呢
还有最后关键的一点东西,就是按钮的点击事件
private void lbl_MouseDown(object sender, MouseEventArgs e) { if (this.BtnClick != null) BtnClick(this, e); }
至此基本上就完工了,下面列出了完整的代码
// 版权所有 黄正辉 交流群:568015492 QQ:623128629 // 文件名称:UCBtnExt.cs // 创建日期:2019-08-15 15:57:36 // 功能描述:按钮 // 项目地址:https://gitee.com/kwwwvagaa/net_winform_custom_control using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; namespace HZH_Controls.Controls { [DefaultEvent("BtnClick")] public partial class UCBtnExt : UCControlBase { #region 字段属性 [Description("是否显示角标"), Category("自定义")] public bool IsShowTips { get { return this.lblTips.Visible; } set { this.lblTips.Visible = value; } } [Description("角标文字"), Category("自定义")] public string TipsText { get { return this.lblTips.Text; } set { this.lblTips.Text = value; } } private Color _btnBackColor = Color.White; [Description("按钮背景色"), Category("自定义")] public Color BtnBackColor { get { return _btnBackColor; } set { _btnBackColor = value; this.BackColor = value; } } private Color _btnForeColor = Color.Black; /// <summary> /// 按钮字体颜色 /// </summary> [Description("按钮字体颜色"), Category("自定义")] public Color BtnForeColor { get { return _btnForeColor; } set { _btnForeColor = value; this.lbl.ForeColor = value; } } private Font _btnFont = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); /// <summary> /// 按钮字体 /// </summary> [Description("按钮字体"), Category("自定义")] public Font BtnFont { get { return _btnFont; } set { _btnFont = value; this.lbl.Font = value; } } /// <summary> /// 按钮点击事件 /// </summary> [Description("按钮点击事件"), Category("自定义")] public event EventHandler BtnClick; private string _btnText; /// <summary> /// 按钮文字 /// </summary> [Description("按钮文字"), Category("自定义")] public string BtnText { get { return _btnText; } set { _btnText = value; lbl.Text = value; } } #endregion public UCBtnExt() { InitializeComponent(); this.TabStop = false; } private void lbl_MouseDown(object sender, MouseEventArgs e) { if (this.BtnClick != null) BtnClick(this, e); } } }
namespace HZH_Controls.Controls { public partial class UCBtnExt { /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源。 /// </summary> /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region 组件设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UCBtnExt)); this.lbl = new System.Windows.Forms.Label(); this.lblTips = new System.Windows.Forms.Label(); this.imageList1 = new System.Windows.Forms.ImageList(this.components); this.SuspendLayout(); // // lbl // this.lbl.BackColor = System.Drawing.Color.Transparent; this.lbl.Dock = System.Windows.Forms.DockStyle.Fill; this.lbl.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.lbl.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.lbl.Location = new System.Drawing.Point(0, 0); this.lbl.Name = "lbl"; this.lbl.Size = new System.Drawing.Size(184, 60); this.lbl.TabIndex = 0; this.lbl.Text = "自定义按钮"; this.lbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.lbl.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lbl_MouseDown); // // lblTips // this.lblTips.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lblTips.BackColor = System.Drawing.Color.Transparent; this.lblTips.Font = new System.Drawing.Font("Arial Unicode MS", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.lblTips.ForeColor = System.Drawing.Color.White; this.lblTips.ImageIndex = 0; this.lblTips.ImageList = this.imageList1; this.lblTips.Location = new System.Drawing.Point(158, 0); this.lblTips.Name = "lblTips"; this.lblTips.Size = new System.Drawing.Size(24, 24); this.lblTips.TabIndex = 1; this.lblTips.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.lblTips.Visible = false; // // imageList1 // this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); this.imageList1.TransparentColor = System.Drawing.Color.Transparent; this.imageList1.Images.SetKeyName(0, "tips.png"); // // UCBtnExt // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.BackColor = System.Drawing.Color.Transparent; this.ConerRadius = 5; this.Controls.Add(this.lblTips); this.Controls.Add(this.lbl); this.Cursor = System.Windows.Forms.Cursors.Hand; this.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(247)))), ((int)(((byte)(247))))); this.IsShowRect = true; this.IsRadius = true; this.Margin = new System.Windows.Forms.Padding(0); this.Name = "UCBtnExt"; this.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(247)))), ((int)(((byte)(247))))); this.Size = new System.Drawing.Size(184, 60); this.ResumeLayout(false); } #endregion public System.Windows.Forms.Label lbl; private System.Windows.Forms.Label lblTips; private System.Windows.Forms.ImageList imageList1; } }
最后的话
如果你喜欢的话,请到 https://gitee.com/kwwwvagaa/net_winform_custom_control 点个星星吧
-
winform自定义控件(3)———自定义类型属性
2021-08-12 11:39:54假如自定义控件中需要一些自定义类型的属性,那么如果直接使用时,会出现下面的情况 此处自定义一个结构体 public struct ThreeDimensionPoint { public int X { get; set; } public int Y { get; set; } public int... -
Winform自定义控件C#
2020-02-20 12:01:15一、生成自定义控件DLL形式在其他项目中调用 1.创建自定义控件 选择【经典桌面】——【窗体控件库】 2.添加控件,组合成一个新的控件 自定义控件功能:打开一张图片,将图片展示在pictureBox控件中,并将图片的名称... -
C#winform自定义控件——textBox美化
2022-04-05 11:39:31创建一个winform新项目 界面中拖入两个panle设置成不同的颜色即可,作为背景,这样我们在设置的时候可以有个对比和测试效果 在项目中添加一个用户控件 修改名称,例如MyTextBox,不要使用TextBox,这是VS自带的... -
C#自定义控件之-winform美化
2019-03-23 08:25:12对于系统自带的窗体,博主实在不敢恭维,测试时使用方便快捷,但真正项目中无法使用,只因不美观的外表,每次都很头疼窗体的美化,这里列出一些需要解决的问题和自己收集到的解决方法,如有错误请指出。 -
C#C#winform自定义控件.zip
2020-02-04 23:31:49C#winform自定义控件! C#winform自定义控件! C#winform自定义控件! C#winform自定义控件! C#winform自定义控件! C#winform自定义控件! C#winform自定义控件! C#winform自定义控件! C#winform自定义控件! ... -
C#winform 自定义控件实现圆形进度条和环形进度条控件
2019-12-11 17:14:41C#winform 自定义控件实现圆形进度条和环形进度条控件,vs2017开发,可直接编译运行,用于进度显示,详细的去看博客介绍。 -
WInform自定义控件:自定义下拉框/弹出框
2021-02-24 12:33:35但是某些时候 ,我们系统弹出菜单能够显示自定义的控件内容。例如在弹出菜单中放置一个搜索框,或者自定义一个ComboBox等。那么就需要利用到一个系统组件:ToolStripDropDown ToolStripDown的官方介绍:... -
(三十二)c#Winform自定义控件-表格
2019-09-08 10:35:28入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git 如果... -
winform自定义控件(2)———系统自带类型属性
2021-08-12 10:21:59我们在自定义控件的时候,难免需要给自定义控件类添加一系列的属性,如下: [CategoryAttribute("自定义项目"), DescriptionAttribute("曲线类型")] public Jerk jerk { get; set; } = Jerk.S; [CategoryAttribute... -
C# Winform自定义控件GDI+实现住院病床控件
2022-02-17 01:22:52首先我们学习组件的开发,必须要了解winform的绘图是怎么绘制的,以下知识建议先自行了解:PaintEventArgsRectangleGraphicsPath我们使用GraphicsP...