作者:donna donna.zdn@gmail.com 自由转载 但请保留作者信息
我在自己的网页中用TreeView来做菜单导航,实际使用中经常遇到这种情况:由于需要显示的内容比较长而页面上又没有充足的空间来显示,导至用户不能看到节点的全部内容。于是我想到了ToolTip属性,当用户用鼠标指向某一节点时,在ToolTip里显示该项的使用内容。但TreeView控件并没有提供节点的ToolTip属性,于是就有了这篇随笔。
1、为TreeView的节点添加ToolTip属性
打开treenode.cs文件添加如下内容:
//add by donna;ToolTip
/// <summary>
/// ToolTip
/// </summary>
[DefaultValue("")]
[Category("Appearance")]
[ResDescription("ToolTip")]
public string ToolTip
{
get
{
object obj = ViewState["ToolTip"];
return (obj == null) ? String.Empty : (string)obj;
}
set { ViewState["ToolTip"] = value; }
}
//add end

这样就可以在设计时或在运行时使用代码来修改节点的ToolTip了。
2、在IE中显示ToolTip
首先,打开treenode.cs文件,在protected override void RenderUpLevelPath(HtmlTextWriter output)方法中添加如下内容:
//add by donna; 用于在IE中显示每个节点的ToolTip
if (ToolTip != string.Empty)
output.AddAttribute("title",ToolTip);
//add end
然后,打开runtime目录下的treeview.htc文件,在function generateItem(el, nodeClass)方法中添加如下内容:
//modified by donna ;用于在IE中显示每个节点的ToolTip
if (element.getAttribute("showToolTip") != false)
{
str = getNodeAttribute(el, "title");
if (str != null && str != "")
{
if (nodeClass == "parent")
accessAnchor.title = str + " : " + L_strToolTip_Text;
else
accessAnchor.title = str;
}
}
//modify end
3、在FireFox中显示ToolTip
打开treenode.cs文件,在protected override void RenderDownLevelPath(HtmlTextWriter output)方法中添加如下内容:
//add by donna;在FireFox中显示ToolTip
if (ParentTreeView.ShowToolTip && ToolTip != string.Empty)
{
output.AddAttribute(HtmlTextWriterAttribute.Title, ToolTip);
}
//add end
使用方法:
1、运行build.bat编译控件;
2、将src\runtime\目录下所有内容复制到你的WEB应用程序目录的webctrl_client\1_0\目录下;
3、请参考演示程序使用。
环境:WIN2003、IIS6、VS2003、Framework1.1、IE6、FireFox1.5
代码下载
请参考:扩展IE WebControls之一:让Toolbar支持客户端事件


浙公网安备 33010602011771号