【自定义控件】c#winform自定义控件实现标签控件

介绍

首先我们设计这个控件的时候要明白控件是怎样交互的, 熟悉b站的小伙伴应该知道 ,我们上传视频的时候会去选择标签 ,我们输入标签文本 按下回车就代表该标签已经添加成功了,效果图如下!

dc8d7730278caf073315f9f230383f8f.png

控件拆分

我们首先拆分一下该控件, 整个控件可以看成是一个已选标签界面和一个文本输入界面。

已选标签界面里面是有很多小标签,一个一个组成的。

一:那么我们首先实现已选标签界面里面标签控件

标签控件我是继承的UserControl 然后再userControl界面添加一个label控件来模拟关闭按钮。

f16cdf74924e3d115a8e8528de294be0.png

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

c05814c539c173f54b674852c9e8ff1e.png

上半部分使用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);
        }

实际效果

698c7b99dea9de453bbb7c13c6b06d09.png

这样我们仿b站标签控件就实现成功了!

 如果觉得我的文章还不错,请点赞并给个关注,谢谢各位看官姥爷!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值