C# .net 下拉框显示提示内容-【ComboBox】
________________________________________________________________________________________________________________________________________________________________
這是自已一個(gè)小程序用到,要求在ComboBox下拉框上顯示提示文本也就是ToolTip
用谷歌搜了,在Codeproject上瀏覽的幾遍,發(fā)現(xiàn)相關(guān)的介紹比較少。
介紹的方法也主要是基于api捕捉實(shí)現(xiàn),這種方法的代碼看起來(lái)似乎比較復(fù)雜。仔細(xì)閱讀MSDN上關(guān)于ComboBox的內(nèi)容,可以看到,更為簡(jiǎn)單的實(shí)現(xiàn)方法是通過(guò)ComboBox的DrawItem(繪制下拉菜單時(shí)產(chǎn)生的事件)。
下面是我得到的實(shí)現(xiàn)代碼。
主要思路是當(dāng)下拉項(xiàng)目高亮?xí)r(DrawItemState.Selected),即顯示TooLTip(這里我們先要new一個(gè)ToolTip的實(shí)例,這里為toolTip1)。如果你有多個(gè)ComboBox需要顯示ToolTip,那么應(yīng)該考慮新建一個(gè)ComboBox的繼承類。這里我建議采用文獻(xiàn)[2]中介紹的方法,文獻(xiàn)[2]中的方法還可以實(shí)現(xiàn)一個(gè)功能,即如果下拉項(xiàng)目的內(nèi)容長(zhǎng)度沒有超過(guò)ComboBox的寬度時(shí),不顯示ToolTip。要注意的一點(diǎn)是使用文獻(xiàn)[2]中的代碼時(shí),你需要將顯示ToolTip的條件改為(e.State &?DrawItemState.Selected) ==?DrawItemState.Selected 并把Else后面的條件語(yǔ)句刪除,不然可能得不到我們想要的結(jié)果。近日由于自已一個(gè)小程序的需要,要求在ComboBox下拉項(xiàng)目(每個(gè)item)上顯示ToolTip,用Google搜了幾圈,在Codeproject上瀏覽的幾遍,發(fā)現(xiàn)相關(guān)的介紹比較少,介紹的方法也主要是基于api捕捉實(shí)現(xiàn),這種方法的代碼看起來(lái)似乎比較復(fù)雜(比較完整的實(shí)現(xiàn)代碼見參考文獻(xiàn)[3])。仔細(xì)閱讀MSDN上關(guān)于ComboBox的內(nèi)容[1],可以看到,更為簡(jiǎn)單的實(shí)現(xiàn)方法是通過(guò)ComboBox的DrawItem(繪制下拉菜單時(shí)產(chǎn)生的事件)。下面是我通過(guò)參考文獻(xiàn)[1]與[2]得到的實(shí)現(xiàn)代碼。主要思路是當(dāng)下拉項(xiàng)目高亮?xí)r(DrawItemState.Selected),即顯示TooLTip(這里我們先要new一個(gè)ToolTip的實(shí)例,這里為toolTip1)。如果你有多個(gè)ComboBox需要顯示ToolTip,那么應(yīng)該考慮新建一個(gè)ComboBox的繼承類。這里我建議采用文獻(xiàn)[2]中介紹的方法,文獻(xiàn)[2]中的方法還可以實(shí)現(xiàn)一個(gè)功能,即如果下拉項(xiàng)目的內(nèi)容長(zhǎng)度沒有超過(guò)ComboBox的寬度時(shí),不顯示ToolTip。要注意的一點(diǎn)是使用文獻(xiàn)[2]中的代碼時(shí),你需要將顯示ToolTip的條件改為(e.State &?DrawItemState.Selected) ==?DrawItemState.Selected 并把Else后面的條件語(yǔ)句刪除,不然可能得不到我們想要的結(jié)果。
//[界面設(shè)計(jì)中的代碼,desigener]// 建立名為kineticFileComboBox 下拉表單this.kineticFileComboBox.FormattingEnabled = true;this.kineticFileComboBox.Location = new System.Drawing.Point(213, 197);this.kineticFileComboBox.Name = "kineticFileComboBox";this.kineticFileComboBox.Size = new System.Drawing.Size(170, 20);this.kineticFileComboBox.TabIndex = 14;this.kineticFileComboBox.Text = "請(qǐng)先載入文件...";//重繪下拉表單窗口,需要在窗口設(shè)計(jì)代碼中加入下面這一句this.kineticFileComboBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;//下拉表單重繪事件this.kineticFileComboBox.DrawItem += new System.Windows.Forms.DrawItemEventHandler(kineticFileComboBox_DrawItem);this.kineticFileComboBox.DropDownClosed += new System.EventHandler(kineticFileComboBox_DropDownClosed);//[主程序中的代碼]private void kineticFileComboBox_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e){// 繪制背景 e.DrawBackground();//繪制列表項(xiàng)目 e.Graphics.DrawString(kineticFileComboBox .Items [e.Index ].ToString (), e.Font , System.Drawing.Brushes.Black, e.Bounds );//將高亮的列表項(xiàng)目的文字傳遞到toolTip1(之前建立ToolTip的一個(gè)實(shí)例)if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)toolTip1.Show(kineticFileComboBox.Items[e.Index].ToString(), kineticFileComboBox, e.Bounds.X + e.Bounds.Width, e.Bounds.Y + e.Bounds.Height);e.DrawFocusRectangle();}//關(guān)閉列表時(shí),同時(shí)關(guān)閉toolTip1的顯示private void kineticFileComboBox_DropDownClosed(object sender, System.EventArgs e){ toolTip1.Hide(kineticFileComboBox ); }?
這樣就實(shí)現(xiàn)了我們的需求 下拉框項(xiàng)目里有提示信息
?????????????????????????????????????????????????????????????
轉(zhuǎn)載于:https://www.cnblogs.com/ftchen/p/5321649.html
總結(jié)
以上是生活随笔為你收集整理的C# .net 下拉框显示提示内容-【ComboBox】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android网络技术-WebView的
- 下一篇: 第四周进度条