控件ListViewEx的使用
示例的使用效果
其中: 标题头部分通过属性“Columns”设置 内容部分
前面有图标部分,通过“Items”属性设置 后面的几列,通过“Items”的“SubItems”属性设置
可以通过设置该属性,可以使实现各种排列方式。
控件SuperToolTip的使用
示例的使用效果
用法:
只是将控件Super Tool Bar添加到工程中,然后,再在要加入上述效果的控件的属性中,找到“superTooltip上的SuperTooltip”,单击
。
随后,会出现如上图所示的对话框,然后,就可以根据该对话框上的提示进行操作。 值得注意的是:这里也可以使用Html语言,使用超链接(实际的效果类似于LinkButton控件),为该控件添加更多的功能。
只不过的是:需要在SuperToolTip控件的
事件进行必要的设置。
通过程序为控件设置“superTooltip上的SuperTooltip”所应该设置的内容,下面以为TreeView控件的node节点进行相关设置进行说明:
首先,定义了一个NodeSuperTooltipProvider类,为每一个node对象,提供Supe
rTooltip功能
///
/// 包装,使得SuperTooltips能为节点对象显示 ///
public class NodeSuperTooltipProvider : Component, DevComponents.DotNetBar.ISuperTooltipInfoProvider { private TreeNode m_Node=null; public NodeSuperTooltipProvider(TreeNode node) { m_Node=node; }
// 为给定的node显示tooltip public void Show() { if(this.DisplayTooltip != null) DisplayTooltip(this,new EventArgs()); }
// 为给定的node隐藏tooltip public void Hide() { if(this.HideTooltip != null) this.HideTooltip(this,new EventArgs());
}
#region ISuperTooltipInfoProvider Members
// 返回node对象的屏幕坐标
public System.Drawing.Rectangle ComponentRectangle { get { Rectangle r=m_Node.Bounds; r.Location=m_Node.TreeView.PointToScreen(r.Location); return r; } }
//下面的事件是程序自动提供的
public event EventHandler DisplayTooltip; public event EventHandler HideTooltip; #endregion
}
为树TreeView的每一个node节点添加ToolTip // 为每个节点加载SuperTooltip信息 TreeNode node=treeView1.Nodes[0]; while(node != null) { // 创建包装器提供SuperTooltip控件访问节点对象 NodeSuperTooltipProvider sp=new NodeSuperTooltipProvider(node); node.Tag=sp; // 将包装器连同关于如何显示在SuperTooltip的这个节点的信息分配到SuperTooltip 控件 superTooltip1.SetSuperTooltip(sp,new DevComponents.DotNetBar.SuperTooltipInfo(\text for \+node.Text,\,\body text for this node. \\n\\r\+node.Text,null,null,DevComponents.DotNetBar.eTooltipColor.Lemon)); // 必须展开节点用于通过NextVisibleNode获得子节点 node.Expand(); node=node.NextVisibleNode; }
和TreeView相关的一些操作
private TreeNode m_LastMouseOverNode=null;
private void treeView1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) {
TreeNode nodeAt=treeView1.GetNodeAt(e.X,e.Y); if(nodeAt != m_LastMouseOverNode) { HideNodeTooltip(); if( nodeAt != null) { m_LastMouseOverNode=nodeAt; // 延迟显示 tooltipDisplayDelay.Start(); } } }
private void ShowNodeTooltip(TreeNode node) { if(node==null) return; NodeSuperTooltipProvider sp=node.Tag as NodeSuperTooltipProvider; sp.Show(); m_LastMouseOverNode=node; }
private void treeView1_MouseLeave(object sender, System.EventArgs e) { // 当鼠标离开树控件时隐藏tooltip HideNodeTooltip(); tooltipDisplayDelay.Stop(); }
private void HideNodeTooltip() { if(m_LastMouseOverNode != null) { NodeSuperTooltipProvider sp=m_LastMouseOverNode.Tag as NodeSuperTooltipProvider; sp.Hide(); m_LastMouseOverNode=null; } }
private void tooltipDisplayDelay_Tick(object sender, System.EventArgs e) { tooltipDisplayDelay.Stop();