2014-02-18 70 views
3

我已經搜索了各種解決方案,但沒有人給我直接答案,或者沒有寫入vb.net。但我的情況是,我有一個ComboBox用戶可以選擇一些項目。我想添加簡單的工具提示,以便每個用戶知道他或她選擇了什麼。但是,只有選中某個項目後,工具提示纔會顯示。我希望工具提示在鼠標懸停在每個項目上時顯示。如何爲Combobox中的每個項目添加工具提示

下面是我的代碼:

Private Sub VotingAgentComboBox_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VotingAgentComboBox.MouseHover 
    Dim VotingAgentToolTip As New ToolTip 
    If VotingAgentComboBox.Text = "ISS" Then VotingAgentToolTip.SetToolTip(VotingAgentComboBox, "You selected ISS") 
End Sub 
+1

它只是在做選擇的項目,因爲你正在測試所選項目:'如果VotingAgentComboBox.Text'。單個項目不會獲得鼠標事件,所以如果沒有子類化或使用WndProc,ToolTip將會很困難。或者在CBO中使用更多描述性文字。您可以將Items存儲在Items中,而不僅僅是字符串,因此您可以編寫Class來存儲CBO中的任何內容,並覆蓋'ToString'以爲Items列表提供更長的描述性文本。 – Plutonix

+0

謝謝你的意見,現在我明白我的問題了,但是我怎麼去討論這個子課呢? – AznDevil92

+0

[這裏是一個示例](http://social.msdn.microsoft.com/Forums/windows/en-US/e234c4a7-0cf7-4284-a072-8152f7593002/combobox-item-highlight-event?forum=winforms)其結束子類化並執行Owner Draw和WndProc以獲得您可用於顯示工具提示的ItemHighlight事件。它是一個奇怪的控制 - 有點像一個UserControl幾件。 **很多**更容易提供更好的描述,以 – Plutonix

回答

1

試試這個.. 添加提示控制,以對您的表格和寫代碼DRAWITEM事件ComboBox控件組合框設置爲OwnerDrawFixed的

而且DrawMode屬性

if (e.Index == -1) { return; } 

      Point p = new Point(ComboBox1.Location.X + 120, ComboBox1.Location.Y + ComboBox1.Height + (30 + e.Index * 10)); 



      if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) 
      { 

       toolTip.Show(ComboBox1.Items[e.Index].ToString(), this, p); 

      } 



      e.DrawBackground(); 

      e.Graphics.DrawString(ComboBox1.Items[e.Index].ToString(), e.Font, Brushes.Black, new Point(e.Bounds.X, e.Bounds.Y)); 
+0

我收到很多「Overload resolution failed due to ....」錯誤。 – AznDevil92

+0

這段代碼已經由我測試確切地爲我工作我沒有得到任何錯誤.. –

+4

這不是VB.NET。 –

相關問題