DOTNETBAR的使用方法(转)

这里都是我自从去年开始用dotnetbar这个vs上的美化控件之后的一些使用心得和使用技巧,我现在几乎每次用到这个控件的时候,都会按照下面的技巧,来安排我的这些控件的排列方式啊,style等等,希望给各位一些抛砖引玉的作用,也欢迎大家写出自己的小技巧,让我们的winform程序更加漂亮~~

几个修改的地方
1、RIBBONTITLE,一开始要留空,后来用代码修改
2、把左上角的圆点的功能删除掉
3、左上角要写成:系统状态:联通中
4、接下来要解决一个问题,就是关于DATAGRID的TITLE,都要让所有的名称都排下,不要换行

使用RIBBONCONTROL要注意的几个问题:
1、首先将form的text设置为空
2、然后将form的controlbox设置为false
3、然后将form的formborderstyle设置为Sizable
4、最后一步,在ribboncontrol的标题栏写窗口标题,注意不是text而是RibbonControl1.TitleText = “非煤矿山应急救援指挥系统 – 基本情况数据库”
5、如果你喜欢,我习惯将FORM的STARTPOSITION设置为CENTERSCREEN

使用BAR作为STATESBAR的几个小技巧
1、这个BAR是DOTNETBAR系列里的BAR,而不是其他的:》
2、要将STYLE设置为OFFICE2007
3、将ROUNDCORDERS设置为FALSE会好看一点,我试了试,圆角的怎么看都不舒服
4、将BARTYPE设置为STATUSBAR

使用GROUPPANEL的小技巧:
1、把BACKCOLOR设置为透明
2、将style中的textlinealignment 设置为center(ps:之前是near实在有点难看,太贴近上部了)
3、内部的label一般使用vs自带的标准label即可,不需要使用ribbon的labelx,我觉得肯定会涉及到painting的问题导致性能下降,而且我觉得

使用PANELEX
1、一般要设置padding为1,1,1,1否则,当内部空间维DOCK FILL的时候,会把PANEL的边框挡住,效果不好看
2、如果PANELEX就在RIBBONCONTROL的里面,一般设置LOCATION为3,0,同时在右侧拖动的时候,拖动到一个恰好位置之后,再把SIZE的宽度加4,这样效果很好

TABLE类窗口的修改
1、去掉原点下的菜单
2、去掉系统:联通中,右侧的那个QUICKITEM
3、将DATAGRIDVIEWX的LOCATION调整到3,3,同时,将宽度向右增加2
4、将每一个PANELX的TEXT都留空

美化DATAGRIDVIEWX的几点
1、修改ALTERNATINGROWSDEFAULTCELLSTYLE的BACKCOLOR
2、修改COLUMNHEADERSHEIGHT

建立RIBBONCONTROL的几点小细节
1、建立一个FORM,将form的text设置为空,将controlbox设置为false,将startposition设置为centerscreen;
2、拖过来一个RIBBONCONTROL,加工一下RIBOONCOTROL,比如是去掉原点下的选项,去掉QUICKITEM等等,然后拖放位置,这时候我一般有两个处理ribboncontrol的方式,一种是利用ribboncontrol作为整个form,那么就将ANCHOR设置为UP DOWN LEFT RIGHT四个侧面;另外一种是利用ribboncontrol左右一个顶部的导航栏,那样的话,就不需要设置anchor了,去掉多余的ribbontabitem2和ribbontamitem1上多余的ribbonbar1,ribbontabitem1字样不用去掉,可以在程序里统一设置它和titletext的内容
3、托一个BAR过来,几点设置,DOCK为BOTTOM,ROUNDCORNER为FALSE,BARTYPE为STATUSBAR,然后再把ribboncontrol的下边缘向下拖,放在ribbonbar旁边
4、如果在这里放一个PANELX的时候,有两种情况

1)只有一个PANELX,情况简单一点,直接DOCK为FILL就好(发现这样不行,PANEL不会随着RIBBONPANEL的变大而同样变大,所以这个方法OVER了)
解决方法:如果是这样,现在找到了一个方法,把PANELX放在LOCATION=3,0,然后在ribboncontrol的sizechanged方法中
用这两句变化:
Me.PanelEx1.Height = Me.RibbonControl1.Height – 60
Me.PanelEx1.Width = Me.RibbonControl1.Width – 6
效果比较完美。

2)如果是左右两个PANELX,情况稍微复杂一点,不过也要注意调整anchor即可
注意:这里有一个问题,就是如果RIBBONCONTROL是用ANCHOR来对齐下侧位置的话,那么就不能一上来让FORM最大化,那样的话,ANCHOR为BOTTOM的时候,下侧无法对齐
2009年7月6日
1.ANCHOR是不可靠的,所以窗体SIZECHANGED之后,要用WIDTH和HEIGHT来限制控件的宽度和高度,做到美观统一!
2.RIBBONCONTROL DOCK设置为NONE,然后ANCHOR设置为上下左右(或者设置DOCK为TOP,设置好ANCHOR的BOTTOM,不过后来证明,这种方法不行)
3.小技巧,在任何一个控件上,右键里,都可以快速选择包含本身的上一级控件

PS:这里顺便写一下c1chart的使用技巧
1、backcolor设置为透明
2、一般会把这个放在一个panel里,dock为fill,而panel的dock也为fill,这点有点绕,不过为了美观

 

 

 

 

我这里讨论的版本是DotNetBar 6.7.0.1 for VS2005的破解版本,其他版本我一个是没有时间找到,另外也是因为大同小异

下载地址,见这里,如果还有哪个朋友下载不了,就加我QQ吧,如果你能提供一个群,我会写在这里,然后利用群空间来整理控件,方便你我

下载地址是www.vscodes.com/soft/show.asp?id=2879&showasp=1&details.html

在VS2005中的添加方法与IRISSKIN2类似,不过我这里再说一次:

先把控件拷到你的程序BIN/Debug下,再到程序里,先引用,然后再工具栏新个一个选项,然后右键选择“选择项”菜单,在这个对话框里点浏览,里把这个DLL重新添加进来,这样,就可以把控件加到先项框里,接下来就是把控件拖到界面上,在代码里加上上面的说明的代码,就可以使用了。有好几十个空间,可以把你的程序装扮成office2007。很COOL!

这里转几篇使用的日志:

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 System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace SuperTooltip
{
/// <summary>
/// Wrapper so SuperTooltips can be displayed for node objects.
/// </summary>
public class NodeSuperTooltipProvider : Component, DevComponents.DotNetBar.ISuperTooltipInfoProvider
{
   private TreeNode m_Node=null;

   /// <summary>
   /// Creates new instance of the object.
   /// </summary>
   /// <param name="node">Node to provide tooltip information for</param>
   public NodeSuperTooltipProvider(TreeNode node)
   {
    m_Node=node;
   }

   /// <summary>
   /// Call this method to show tooltip for given node.
   /// </summary>
   public void Show()
   {
    if(this.DisplayTooltip!=null)
     DisplayTooltip(this,new EventArgs());
   }

   /// <summary>
   /// Call this method to hide tooltip for given node.
   /// </summary>
   public void Hide()
   {
    if(this.HideTooltip!=null)
     this.HideTooltip(this,new EventArgs());
   }

   #region ISuperTooltipInfoProvider Members

   /// <summary>
   /// Returns screen coordinates of object.
   /// </summary>
   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()函数中添加:

this.components = new System.ComponentModel.Container();
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
this.tooltipDisplayDelay = new System.Windows.Forms.Timer(this.components);

需要初始化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;
   // Assign the wrapper to SuperTooltip control together with information
   // about what to display on Super Tooltip for this node.
   superTooltip1.SetSuperTooltip(sp,new DevComponents.DotNetBar.SuperTooltipInfo([header_text],"",[additional_text],null,null,DevComponents.DotNetBar.eTooltipColor.Lemon));
   // Must expand node to get to the child nodes via NextVisibleNode
   node.Expand();
   node=node.NextVisibleNode;
}
}

其中[header_text]和[additional_text]处添加希望在提示框中显示的string。[header_text]会被加粗。另外,SuperTooltipInfo的最后一个参数用来改变颜色。

本来这些代码在sample里面是写在Form1的Load事件函数里面的,但是一般来说用到树视图的程序都会对节点进行各种操作,比如添加、删除、修改等等。我设计的提示框中显示的是节点的Text、它子节点的Text和它父节点的Text。开始我按照sample的代码把这些代码写在Form1的Load事件函数中,结果当我删除了一个节点时,它父节点的提示框内容并没有改变。其原因就是以上这段生成每个节点的提示框的代码只在Form1生成的时候才调用Load事件函数,而改变树视图后并不重新生成。所以,我把这些代码单独写在一个函数中,
并在Form1的Load事件函数中调用它,并且在我对树和节点进行操作以后也会调用它,以刷新所有的提示框。

5 Form1的Load事件函数,每个添加、修改、删除节点的button、menuItem等对象的Click事件函数的最后加入代码:

this.superTooltip_Refresh();

6 定义一个TreeNode私有属性:

private TreeNode m_LastMouseOverNode = null;

7 treeView1的MouseMove事件函数:

TreeNode nodeAt=treeView1.GetNodeAt(e.X,e.Y);
if(nodeAt!=m_LastMouseOverNode)
{
   HideNodeTooltip();
   if(nodeAt!=null)
   {
    m_LastMouseOverNode=nodeAt;
    // Delayed display
    tooltipDisplayDelay.Start();
   }
}

8 treeView1的MouseDown事件函数:

// Hide tooltip if any is visible…
HideNodeTooltip();

9 treeView1的MouseLeave事件函数:

// Hide tooltip when mouse leaves tree control
HideNodeTooltip();
tooltipDisplayDelay.Stop();

10 tooltipDisplayDelay的Tick事件函数:

tooltipDisplayDelay.Stop();
if(m_LastMouseOverNode!=null)
   ShowNodeTooltip(m_LastMouseOverNode);

11 ShowNodeTooltip和HideNodeTooltip函数:

private void ShowNodeTooltip(TreeNode node)
{
if(node==null)
   return;
NodeSuperTooltipProvider sp=node.Tag as NodeSuperTooltipProvider;
sp.Show();
m_LastMouseOverNode=node;
}

private void HideNodeTooltip()
{
if(m_LastMouseOverNode!=null)
{
   NodeSuperTooltipProvider sp=m_LastMouseOverNode.Tag as NodeSuperTooltipProvider;
   sp.Hide();
   m_LastMouseOverNode=null;
}
}

12 以上6-11步,都是sample代码中原封不动搬来的,但是运行的时候有一个重大问题,就是当我添加一个节点以后,当我的鼠标移动到新节点上时,会出现Null异常。经过调试,我发现异常出现在ShowNodeTooltip和HideNodeTooltip函数中的局部变量sp上。关于sp的初始化的代码如下:

// ShowNodeTooltip()
NodeSuperTooltipProvider sp=node.Tag as NodeSuperTooltipProvider;

// HideNodeTooltip()
NodeSuperTooltipProvider sp=m_LastMouseOverNode.Tag as NodeSuperTooltipProvider;

而前面有这样的代码段:
// Creates wrapper to provide SuperTooltip control access to the node object
NodeSuperTooltipProvider sp=new NodeSuperTooltipProvider(node);
node.Tag=sp;

可以看出,SuperTooltip控件是将NodeSuperTooltipProvider的实例赋给节点的Tag以实现提示框的功能。所以,如果我们没有对新建节点的Tag进行赋值,就会出现Null异常。

实际上,如果每当添加一个节点时都调用前面的superTooltip_Refresh(),就不存在这样的异常。但是,并不是每个程序都需要有这样一个刷新提示框的函数,也许某些程序提示框中的内容是固定的。

在这种程序中,修复这个bug的方法有两种:

第一种,就是如果你的节点是从TreeNode继承而来的自定义类,那么在该类的所有构造函数中都加入如下程序段:

this.Tag = new NodeSuperTooltipProvider(this);

第二种,就是如果你的节点用的就是TreeNode组件,那么就要在添加节点的所有button和menuItem等对象的Click事件结尾加入:

[node_name].Tag = new NodeSuperTooltipProvider([node_name]); // [node_name]是新建节点在函数中的标识符。

至此,我们的树视图中提示框的功能就实现了。

2、——————————————————————

最近在使用dotnetbar,简单写一下使用方法,具体细节有待研究。希望对初次使用的人有用。
1、Bar就是一个菜单栏,可以右键增加button和combobox等等许多,大家可以一一试试。
2、bubbleBar是一个工具栏,右键增加button(可以增减tab但是没看出啥效果),然后就可以实现苹果系统的波浪选择效果。
3、balloonTip,气球。把他拖到任何一个控件上面,当鼠标在上面悬浮时就出现气球。
4、ContextMenuBar,这是在鼠标右击的时候出来的菜单.
5、colorPickerButton控件,用来做颜色的选择。
6、ComboBoxEx,看名字就知道了
7、ListViewEx和GroupPanel,看名字就知道是什么了。好看了许多
8、RibbonBar,还是button,office2007风格,可以右键增加。
9、explorerBar,类似于winxp左边的导航菜单,在vista大行其道的今天,觉得不是十分漂亮了
10、itemPanel,与expandableSplitter结合可以做导航栏,设置ExpandedControl属性,鼠标过度效果
11、expandablePanel,可下拉的控件,点击后回缩
12、maskedTextBoxAdv,textbox,加了个按钮实现清空
13、tabControl,这个比较有用一点。
先写这么点,没有涉及到具体应用,希望给第一次用的人不知道是什么了查一下。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DotNetBar 是一款常用的 C#/.NET 控件库,它包含丰富的控件和 UI 组件,能够帮助开发者快速搭建美观、高效的桌面应用程序。若想要使用 DotNetBar 控件库,则需要安装控件库,并注册 LicenseKey。 下面是 DotNetBar 使用教程 LicenseKey 的具体步骤: 1.首先,你需要到 DevComponents 官网购买授权,并获取 LicenseKey; 2.接下来,打开 Visual Studio,创建一个新项目; 3.在新建项目的窗口中,选择“Windows Forms 应用程序”,然后点击“确定”按钮; 4.接着,在 Visual Studio 中添加 DotNetBar 库。右键项目,选择“管理 NuGet 包”; 5.在 NuGet 包管理器中输入“DotNetBar”,然后点击“安装”按钮即可安装完成; 6.安装完成后,打开 Form1.cs,添加下面的代码: using DevComponents.DotNetBar; namespace WindowsFormsApplication1 { public partial class Form1 : DevComponents.DotNetBar.Office2007Form { public Form1() { InitializeComponent(); } } } 7.接着,在 Form1.cs 文件里复制粘贴以下代码: public partial class Form1 : DevComponents.DotNetBar.Office2007Form { public Form1() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { // 注册 LicenseKey DotNetBarManager.LicenseKey = "你的 LicenseKey"; } protected override void Dispose(bool disposing) { // 释放 DotNetBarManager 组件 DotNetBarManager.Dispose(); base.Dispose(disposing); } } 最后,运行程序,若无任何错误提示,则表示 LicenseKey 验证成功,你就可以使用 DotNetBar 控件库开始开发你的桌面应用程序了。 ### 回答2: DotNetBar 是一款功能强大的 .NET 应用程序用户界面设计工具,可帮助 C# 和 VB 开发人员加速他们的开发过程。DotNetBar 提供了多种 UI 控件以及内置的编辑器和工具箱,方便用户设计出具有现代感和专业效果的应用程序界面。 而在使用 DotNetBar 前,需要进行注册和激活才可使用完整版的功能。注册方式通常有两种,一种是在线注册,一种是离线注册。无论选择哪种方式,都需要输入 licensekey(许可证密钥)。 licensekey 作为 DotNetBar 软件注册的凭证,通常可以在用户所购买的软件包中获取,有时也会以电子邮件的形式发送给用户。获取到 licensekey 后,用户需要将其输入到 DotNetBar 软件注册界面中,进行注册和激活。 具体的使用方法如下: 1. 打开 DotNetBar 软件,点击“注册”按钮进入注册界面。 2. 在注册界面中,点击“输入许可证密钥”按钮,弹出“输入许可证密钥”对话框。 3. 将 licensekey 复制到“许可证密钥”输入框中,然后点击“确定”按钮。 4. 在“激活DotNetBar”界面中,输入用户的相关信息,如姓名、电子邮件等。 5. 点击“激活”按钮,等待激活成功后,即可开始使用 DotNetBar 软件。 总之,licensekey 是使用 DotNetBar 软件的必要条件,只有拥有有效的 licensekey 才能使用软件的全部功能。在输入 licensekey 时,需要仔细检查,确保其正确无误。如果遇到问题,可以参考 DotNetBar 的使用说明或联系客服寻求帮助。 ### 回答3: DotNetBar是一个强大的控件库,它可以帮助开发人员更快速更轻松地开发Windows界面,提高开发效率。不过,使用DotNetBar需要一个有效的licensekey,否则可能会受到限制,如不能使用全部功能或者会有水印等。 使用DotNetBar的教程是比较简单的,只需按照以下几个步骤即可: 1. 下载DotNetBar产品,安装完成后会提示输入licensekey,如果没有就会使用试用版,试用版有功能限制。 2. 如果您已经购买DotNetBar控件库,可直接获取licensekey,将licensekey复制到目录下的“License Key”文件中保存即可,应该可以在安装目录下的“DotNetBar for Windows Forms”中找到License Key文件。 3. 在Visual Studio中打开您的项目,添加DotNetBar控件库至您的工具箱中。在工具箱中点击DotNetBar控件库,拖动控件到设计区中即可使用。 在使用DotNetBar之前,请确保您的Visual Studio版本与DotNetBar版本匹配,否则可能会产生兼容性问题。同时,我们还建议您在遇到问题时查看DotNetBar的官方网站和技术支持论坛,寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值