1. 程式人生 > >C# WinForm控制元件美化擴充套件系列之ImageComboBox_C# 視角_CS程式設計師之窗

C# WinForm控制元件美化擴充套件系列之ImageComboBox_C# 視角_CS程式設計師之窗

(1)美化下拉按鈕和邊框,前面的文章已經實現。

(2)ComboBox沒有控制元件選擇項和沒有焦點時顯示提示使用者操作資訊,前面的也文章已經實現。

(3)在下拉列表框的項中顯示圖示,項可以縮排。

(4)ComboBox控制元件中也顯示圖示。

來看看最終需要實現的效果:

1 ImageComboBox DropDownList效果

2 ImageComboBox DropDown效果

這篇文章中我們重點需要實現的是(3)(4)兩項功能,下面我們來介紹具體實現的方法。

第一步,實現ImageComboBoxItem類。

要實現顯示圖示,當然要給每個項新增與圖示相關的資訊了,ImageComboBoxItem

類應該包括以下內容:文字(Text)、縮排的級別(Level)、圖示的索引(ImageIndexImageKey),使用者資料(Tag)ImageComboBoxItem類實現了ISerializable介面,實現自定義序列化。ImageComboBoxItem類的類檢視如下:

3 ImageComboxItem類檢視

ImageComboBoxItem類的程式碼如下:

[Serializable]


[DefaultProperty(
"Text")]


[TypeConverter(

typeof(ExpandableObjectConverter))]

public

class ImageComboBoxItem :


IDisposable, ISerializable


...{


Fields
#region Fields

private ImageComboBox _imageComboBox;

privatestring _text = "ImageComboBoxItem";

private ImageComboBoxItemImageIndexer _imageIndexer;

privateobject _tag;

privateint _level;

#endregion


Constructors
#region Constructors

public ImageComboBoxItem()


...{


}

public ImageComboBoxItem(string text)


:
this(text, -1, 0)


...{


}

public ImageComboBoxItem(

string text, int imageIndex)


:
this(text, imageIndex, 0)


...{


}

public ImageComboBoxItem(

string text, string imageKey)


:
this(text, imageKey, 0)


...{


}

public ImageComboBoxItem(

string text, int imageIndex, int level)


:
this()


...{


_text = text;


ImageIndexer.Index = imageIndex;


_level = level;


}

public ImageComboBoxItem(

string text, string imageKey, int level)


:
this()


...{


_text = text;


ImageIndexer.Key = imageKey;


_level = level;


}

protected ImageComboBoxItem(


SerializationInfo info,


StreamingContext context)


:
this()


...{


Deserialize(info, context);


}

#endregion


Properties
#region Properties


[Localizable(
true)]

publicstring Text


...{

get


...{

if (_text != null)


...{

return _text;


}

return"";


}

set


...{


_text = value;


}


}


[Bindable(
true)]


[Localizable(
false)]


[DefaultValue(
""

相關推薦

C# WinForm控制元件美化擴充套件系列ImageComboBox_C# 視角_CS程式設計師

(1)美化下拉按鈕和邊框,前面的文章已經實現。 (2)當ComboBox沒有控制元件選擇項和沒有焦點時顯示提示使用者操作資訊,前面的也文章已經實現。 (3)在下拉列表框的項中顯示圖示,項可以縮排。 (4)在ComboBox控制元件中也顯示圖示。 來看看最終需要

《Dotnet9》系列-開源C# Winform控制元件庫1《HZHControls》強力推薦

大家好,我是Dotnet9小編,一個從事dotnet開發8年+的程式設計師。我最近在寫dotnet分享文章,希望能讓更多人看到dotnet的發展,瞭解更多dotnet技術,幫助dotnet程式設計師應用dotnet技術更好的運用於工作和學習中去。 文章閱讀導航 一、寫在前面的話 二、HZHContro

C# winform 控制元件間執行緒更新問題處理方法

1、程式入口新增:Control.CheckForIllegalCrossThreadCalls = false; 2、重新整理控制元件上新增Invoke方法:this.Invoke(handler, new object[] { e });

C# Winform 控制元件大小隨窗體大小等比例縮放

當你的程式設計能力有了一定提升之後,那你在敲程式碼的時候就得開始想想怎麼將自己的寫的程式碼元件化了。所謂元件化,就是將程式碼中公共模組的程式碼提取出來作為一個方法或函式,使其能夠被其他程式或者他人直接使用。 public Form1() {

C# WinForm控制元件的拖動和縮放的實現

轉自:http://blog.csdn.net/joyhen/article/details/8572505 C# WinForm控制元件的拖動和縮放是個很有用的功能。實現起來其實很簡單的,主要是設計控制元件的MouseDown、MouseLeave、MouseMove

C# 公共控制元件ListBox

  Winform控制元件ListBox的用法 1、如何新增listBox的值 this.listBox1.Items.Add("張曉東"); 2、如何判斷listBox集合是否新增過 //檢查新增值是否新增過 if(this.listBox1.items.Contai

C# 公共控制元件Checkbox和CheckedListBox

Winform的開發基本都是基於控制元件事件的,也就是事件驅動型的。 多選框的放置和值的獲取有很多種,這裡介紹幾個簡單常用的方法 1、直接放置Checkbox,並獲取Checkbox的值 上圖 做法也非常簡單,就是在form中放置多個checkbox,然後迴圈遍歷,檢查其checke

C# 公共控制元件RadioBox ,CheckBox

通常RadioBox稱為單選按鈕,CheckBox稱為多選按鈕,這兩個控制元件都是從ButtonBase類中派生,可以將其視為按鈕。   多個checkBox之間的選擇是互相獨立的,互補影響。多個RadioButton之間是互斥的,只能選擇其中一個。同一個容器下的多個RadioButton之間互

C# 公共控制元件NotifyIcon 將視窗最小化到托盤

  1、設定窗體和notifyIcon屬性 notifyIcon  ,新增contextMenuStrip控制元件並整合到notifyIcon  的ContextMenuStrip上。 窗體 2、程式碼 using System; usi

C# 公共控制元件maskedTextBox

IP地址框 1、新增 maskedTextBox 控制元件 2、設定屬性 3、設定MouseLeave事件 private void IPAddressOnMouseLeave(object sender, EventArgs e) { int i=0;

C# 公共控制元件 dateTimePicker

此控制元件用起來簡單 public Form1() { InitializeComponent(); // Set the MinDate and MaxDate. dateTimePicker1.MinDate = new DateTime(1985, 6, 20);

C# 公共控制元件ListView

private void InitListView() { // Create a new ListView control.或者 用工具箱 ListView listView1 = new ListView();

C# 公共控制元件pictureBox

1、新增控制元件 2、分別實現是三個button功能 private void 開啟_Click(object sender, EventArgs e) { string pathname = string.Empty;

C# 公共控制元件progressBar、 toolTip

1、窗體中加入控制元件progressBar1,  toolTip1,timer1 和三個button 2、程式碼如下: private void button1_Click(object sender, EventArgs e)//開始 { timer1.

C# 公共控制元件TreeView

1、初始化控制元件,新增根節點,子節點 public Form1() { InitializeComponent(); InitTreeView(); } private void InitTreeView() { TreeNode parrentNode1 = tree

C# 公共控制元件numericUpDown

1、屬性 Increment                  設定步進值,預設為1 Maximun Minimum   設定最大值最小值 DecimalPlaces

C# 公共控制元件richTextBox

1、新增控制元件 2、新增程式碼 button1(顏色),button2(字型),button3(檢視效果) // 直接介面更改 字型和顏色 // AppendTextColorful(richTextBox1, string.Format("影象顯示操作!"), 10, Color.

C#自定義控制元件美化的RadionButton和CheckButton加入了Image圖示

前段時間剛在CSDN上傳了一個美化的Radionbutton和CheckButton,但是加入imagelist後,顯示不出來,在這裡我對程式碼做了一些更改,希望對大家的學習有幫助。 控制元件效果圖如下: 1.     &nb

C#跨執行緒訪問winform控制元件的方法

方法一:System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;  不推薦使用這種方式,禁止編譯器對跨執行緒訪問做檢查的方式實現。   方法二:使用delegate和invoke

Win10系列C#應用控制元件進階4

多邊形 若要繪製多邊形需要用到Polygon元素,並通過定義一系列的點繪製多邊形。Polygon型別的物件有Points屬性, 這個屬性用來定義組成邊的點集。在前臺程式碼中,使用空格分隔各個點,然後利用逗號分隔座標點來定義點座標。不必為了將起點和終點指定為相同的值而宣告閉合點,Polygon類假設要定義閉合