C# .net 下拉框显示提示内容-【ComboBox】
________________________________________________________________________________________________________________________________________________________________
這是自已一個小程序用到,要求在ComboBox下拉框上顯示提示文本也就是ToolTip
用谷歌搜了,在Codeproject上瀏覽的幾遍,發現相關的介紹比較少。
介紹的方法也主要是基于api捕捉實現,這種方法的代碼看起來似乎比較復雜。仔細閱讀MSDN上關于ComboBox的內容,可以看到,更為簡單的實現方法是通過ComboBox的DrawItem(繪制下拉菜單時產生的事件)。
下面是我得到的實現代碼。
主要思路是當下拉項目高亮時(DrawItemState.Selected),即顯示TooLTip(這里我們先要new一個ToolTip的實例,這里為toolTip1)。如果你有多個ComboBox需要顯示ToolTip,那么應該考慮新建一個ComboBox的繼承類。這里我建議采用文獻[2]中介紹的方法,文獻[2]中的方法還可以實現一個功能,即如果下拉項目的內容長度沒有超過ComboBox的寬度時,不顯示ToolTip。要注意的一點是使用文獻[2]中的代碼時,你需要將顯示ToolTip的條件改為(e.State &?DrawItemState.Selected) ==?DrawItemState.Selected 并把Else后面的條件語句刪除,不然可能得不到我們想要的結果。近日由于自已一個小程序的需要,要求在ComboBox下拉項目(每個item)上顯示ToolTip,用Google搜了幾圈,在Codeproject上瀏覽的幾遍,發現相關的介紹比較少,介紹的方法也主要是基于api捕捉實現,這種方法的代碼看起來似乎比較復雜(比較完整的實現代碼見參考文獻[3])。仔細閱讀MSDN上關于ComboBox的內容[1],可以看到,更為簡單的實現方法是通過ComboBox的DrawItem(繪制下拉菜單時產生的事件)。下面是我通過參考文獻[1]與[2]得到的實現代碼。主要思路是當下拉項目高亮時(DrawItemState.Selected),即顯示TooLTip(這里我們先要new一個ToolTip的實例,這里為toolTip1)。如果你有多個ComboBox需要顯示ToolTip,那么應該考慮新建一個ComboBox的繼承類。這里我建議采用文獻[2]中介紹的方法,文獻[2]中的方法還可以實現一個功能,即如果下拉項目的內容長度沒有超過ComboBox的寬度時,不顯示ToolTip。要注意的一點是使用文獻[2]中的代碼時,你需要將顯示ToolTip的條件改為(e.State &?DrawItemState.Selected) ==?DrawItemState.Selected 并把Else后面的條件語句刪除,不然可能得不到我們想要的結果。
//[界面設計中的代碼,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 = "請先載入文件...";//重繪下拉表單窗口,需要在窗口設計代碼中加入下面這一句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();//繪制列表項目 e.Graphics.DrawString(kineticFileComboBox .Items [e.Index ].ToString (), e.Font , System.Drawing.Brushes.Black, e.Bounds );//將高亮的列表項目的文字傳遞到toolTip1(之前建立ToolTip的一個實例)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();}//關閉列表時,同時關閉toolTip1的顯示private void kineticFileComboBox_DropDownClosed(object sender, System.EventArgs e){ toolTip1.Hide(kineticFileComboBox ); }?
這樣就實現了我們的需求 下拉框項目里有提示信息
?????????????????????????????????????????????????????????????
轉載于:https://www.cnblogs.com/ftchen/p/5321649.html
總結
以上是生活随笔為你收集整理的C# .net 下拉框显示提示内容-【ComboBox】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android网络技术-WebView的
- 下一篇: 第四周进度条