dotbar2使用技巧
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1----------------------------------------------------- DotNetBar的SuperTooltip控件使用技巧
DotNetBar是一个顶尖的.net第三方表示层空间。作出来的窗口可以说是非常非常非常的cool!SuperTooltip控件主要可以用于实现提示框。在它提供的sample 中,实现了树视图中,鼠标移动到树节点上时显示的提示框。
我的一个项目中用到了树视图,在项目完成以后我决定把它用DotNetBar美化一下。在参考着sample的代码对我的代码进行修改和调试的过程中,我发现sample 的代码并不是拿来用就行了的,还是需要理解以后进行修改。
按照sample的代码,假设我们的Form Form1中有控件TreeView treeView1,那么为treeView1实现提示框的方法如下:(我没用窗口编辑器,只修改代码来着)
1在项目的引用中添加DevComponents.DotNetBar。新建一个类NodeSuperTooltipProvider,将sample中的这个类的代码复制过来。注意,如果你的程序里的树节点不是用的.net自带组件TreeNode,而是从TreeNode继承而来的自定义类型,那么将以下所有代码中的TreeNode都改成你自定义的类型,并且很多地方也要加入强制类型转换。
using System;
using ponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace SuperTooltip
{
///
/// Wrapper so SuperTooltips can be displayed for node objects.
///
public class NodeSuperTooltipProvider : Component,
DevComponents.DotNetBar.ISuperTooltipInfoProvider
{
private TreeNode m_Node=null;
///
/// Creates new instance of the object.
///
/// Node to provide tooltip information for
public NodeSuperTooltipProvider(TreeNode node)
{
m_Node=node;
}
///
/// Call this method to show tooltip for given node.
///
public void Show()
{
if(this.DisplayTooltip!=null)
DisplayTooltip(this,new EventArgs());
}
///
/// Call this method to hide tooltip for given node.
///
public void Hide()
{
if(this.HideTooltip!=null)
this.HideTooltip(this,new EventArgs());
}
#region ISuperTooltipInfoProvider Members
///
/// Returns screen coordinates of object.
///
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
}
}
2在Form1种添加控件:
private DevComponents.DotNetBar.SuperTooltip superTooltip1;
private System.Windows.Forms.Timer tooltipDisplayDelay;
一个是SuperTooltip,另一个是.net本身带的Timer,用于控制提示框显示的时间。
3 Form1中的InitializeComponent()函数中添加:
ponents = new ponentModel.Container();
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip(); this.tooltipDisplayDelay = new
System.Windows.Forms.Timer(ponents);
需要初始化components是因为那个Timer初始化的时候要用。不过去掉可以不可以我也没试过……
//
// superTooltip1
//
this.superTooltip1.DefaultFont = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
//
// tooltipDisplayDelay
//
this.tooltipDisplayDelay.Interval = 1000;
4写一个生成所有节点的提示框的函数:
private superTooltip_Refresh()
{
// Load SuperTooltip information for each node...
TreeNode node=treeView1.Nodes[0];
while(node!=null)
{
// Creates wrapper to provide SuperTooltip control access to the node object
NodeSuperTooltipProvider sp=new NodeSuperTooltipProvider(node);
node.Tag=sp;