【自定义控件】c#winform自定义控件实现标签控件
生活随笔
收集整理的這篇文章主要介紹了
【自定义控件】c#winform自定义控件实现标签控件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
介紹
首先我們設計這個控件的時候要明白控件是怎樣交互的, 熟悉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站標簽控件就實現成功了!
?如果覺得我的文章還不錯,請點贊并給個關注,謝謝各位看官姥爺!
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【自定义控件】c#winform自定义控件实现标签控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Avalonia跨平台入门第二十一篇之玩
- 下一篇: 如何理解 C# 中的 System.Vo