如何为Combobox中的每个项目添加工具提示

时间:2014-02-18 16:26:19

标签: vb.net combobox tooltip

我搜索了各种解决方案,但没有一个给我直接答案或者没有用vb.net编写。但我的情况是我有一个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

2 个答案:

答案 0 :(得分:1)

试试这个.. 将工具提示控件添加到您的表单并将此代码写入DrawItem事件到组合框控件

组合框的drawmode属性设置为OwnerDrawFixed

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));

答案 1 :(得分:0)

Heena,您发布的代码可完美运行!谢谢。

  private void CmbUnit_DrawItem(object sender, DrawItemEventArgs e)
    {
        e.DrawBackground();
        if (e.Index >= 0)
        {
            UnitItem item = Items[e.Index] as UnitItem;
            TextRenderer.DrawText(e.Graphics, item.unit_str, e.Font, e.Bounds,
                e.ForeColor, TextFormatFlags.HorizontalCenter);
            e.DrawFocusRectangle();

            Point p = new Point(Location.X + 120, Location.Y + Height + (30 + e.Index * 10));
            if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            {
                ttip.Show(item.unit_name, this, 2000);
            }
        }
    }