【自定义控件】c#winform自定义控件实现标签控件
介紹
首先我們設(shè)計這個控件的時候要明白控件是怎樣交互的, 熟悉b站的小伙伴應(yīng)該知道 ,我們上傳視頻的時候會去選擇標(biāo)簽 ,我們輸入標(biāo)簽文本 按下回車就代表該標(biāo)簽已經(jīng)添加成功了,效果圖如下!
控件拆分
我們首先拆分一下該控件, 整個控件可以看成是一個已選標(biāo)簽界面和一個文本輸入界面。
已選標(biāo)簽界面里面是有很多小標(biāo)簽,一個一個組成的。
一:那么我們首先實現(xiàn)已選標(biāo)簽界面里面標(biāo)簽控件
標(biāo)簽控件我是繼承的UserControl 然后再userControl界面添加一個label控件來模擬關(guān)閉按鈕。
public partial class TagControl : BaseRadiusUserControl?然后寫? 一個定義的關(guān)閉事件??
[Description("關(guān)閉事件"), Category("自定義")]public event EventHandler CloseClick;? ? ?在label控件點擊X去觸發(fā)該關(guān)閉事件
private void close_Click(object sender, EventArgs e){CloseClick?.Invoke(this,e);}然后寫一個賦值的方法 當(dāng)文本值大于2的時候去調(diào)整控件的大小。
public void SetText(string text){this.Content = text;if (text.Length > 1){this.Width = 60 + (text.Length - 1) * 20;}}這樣小標(biāo)簽控件就實現(xiàn)了!
二:然后我們?nèi)崿F(xiàn) 標(biāo)簽的整體控件
? ? ?上半部分是一個已選標(biāo)簽控件, 下半部分是一個文本框。
? ? ? 我們新建一個標(biāo)簽控件繼承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 = "";}我們在動態(tài)加載小標(biāo)簽控件的時候?qū)懮蟘lose關(guān)閉事件
private void TagControl_CloseClick(object sender, EventArgs e){TagControl tagControl = (TagControl)sender;flowTag.Controls.Remove(tagControl);}實際效果
這樣我們仿b站標(biāo)簽控件就實現(xiàn)成功了!
?如果覺得我的文章還不錯,請點贊并給個關(guān)注,謝謝各位看官姥爺!
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的【自定义控件】c#winform自定义控件实现标签控件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Avalonia跨平台入门第二十一篇之玩
- 下一篇: 如何有效的在 LINQ 查询中处理异常?
