65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Internet Explorer 中为下拉列表和列表框控件添加工具提示

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.39/5 (23投票s)

2007年6月1日

CPOL

2分钟阅读

viewsIcon

163912

downloadIcon

944

Internet Explorer 并不总是显示下拉列表和列表框的全部内容。这意味着如果列表框中的数据大于控件的宽度,用户将无法完全看到它。我们可以显示每个内容的工具提示来解决这个问题。

Screenshot - tooltip.jpg

引言

正如你在上图中看到的,Internet Explorer 对下拉框/列表框的渲染是不合适的。它没有显示超出控件宽度的文本。为了解决这个问题,我们可以添加一个带有内容的工具提示,以便用户可以阅读完整的值。

使用代码

为了解决这个问题,我在 Internet 上搜索了,但没有找到合适的解决方案。虽然有一些好的第三方控件可以使用按钮、编辑框、div 等的组合来显示内容。但它们的管理也是一个问题。我想到一个解决方案是为控件的每个元素显示工具提示,这样就可以使用工具提示查看非可见区域的文本。工具提示将在服务器端绑定,并将适用于 Firefox 和 Internet Explorer。以下是将工具提示与控件绑定的代码。

//
// This method binds tooltip with a dropdown/ any list control
//
public static void BindTooltip(ListControl lc)
{
    for (int i = 0; i < lc.Items.Count; i++)
    {
        lc.Items[i].Attributes.Add("title", lc.Items[i].Text);
    }
}

在这里,“title”属性是为每个列表项添加工具提示的魔力。

你所要做的就是在将所有值绑定到控件后调用此函数。你可以将此代码保存在你的帮助器文件中,并在任何需要的地方调用它。如果你的页面中有多个控件需要附加工具提示,则无需多次调用此函数,只需调用它的另一个重载即可。这个重载函数将在页面中搜索列表框,并将工具提示附加到它找到的每个控件。

public static void BindTooltip(System.Web.UI.Page p)
{
    if (p == null || p.Form == null)
            return;
        BindTooltip(p.Form.Controls);
}

为了让我的工作更轻松,我只是将代码放在我的母版页中。每个使用母版页的页面都将自动获得工具提示,如示例所示。

完整的源代码附在示例应用程序中。

尽情享受吧!编程愉快!

© . All rights reserved.