DotNetBar第三方控件使用笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DotNet第三方控件使用笔记
一、ButtonX控件
可实现如下效果:
(1)在ButtonX上,是否显示图像,取决于“images”属性。

(2)在“ButtomItem”控件中,是否“只是显示图像”,“只是文本”,还是“图像和文本都显示”,取决于。

二、BalloonTip控件(气泡提示)
在添加了BalloonTip控件后,其他各个控件会出现对应的“……上的BalloonText”和“……上的BalloonCaption”属性,通过修改这两个属性可设置鼠标移动到控件时弹出的气泡提示的标题和内容,也可通过代码设置这个两个属性,如:
balloonTip1.SetBalloonCaption(txtUserName,"提示");
balloonTip1.SetBalloonText(txtUserName,"输入你的大名吧");
balloonTip1.SetBalloonCaption(txtUserPw,"提示;
balloonTip1.SetBalloonText(txtUserPw,"大名输完了就是你的密码咯");")
1.使用效果
1)效果一:在鼠标在控件上面停留时,出现提示信息,如下图:
2)效果二:当控件获得焦点时,也出现如上图一样的信息。

2.实现上述两种效果的途径
1)将BalloonTip控件的“ShowBalloonOnFacus”属性设置为“False”即可实现效果
一。

3.设置BalloonTip显示的内容
2)将“ShowBalloonOnFacus”属性设置为“True”,即可实现效果二。

1)在欲设置该属性的控件的“BalloonTipOnFocus上的BalloonCaption”和“Ballo
onTipOnHover上的BalloonCaption”属性中,分别设置这两种效果的“标题”
属性;
2)在“BalloonTipOnFocus上的BalloonText”和在“BalloonTipOnHover上的Ball
oonText”属性中,分别设置这两种效果的“显示内容”的属性。

4.属性“AlerAnimation”设置“BalloonTip”出现的效果
5.“BalloonTip”除了出现在该控件附近,还可以出现在屏幕的右下角,示例程序如
下:
private AlertCustom m_AlertOnLoad=null;
m_AlertOnLoad=new AlertCustom();
Rectangle r=Screen.GetWorkingArea(this);
m_AlertOnLoad.Location=new Point(r.Right-m_AlertOnLoad.Width,r.Bottom-m_Alert OnLoad.Height);
m_AlertOnLoad.AutoClose=true;
m_AlertOnLoad.AutoCloseTimeOut=15;
m_AlertOnLoad.AlertAnimation=eAlertAnimation.BottomToTop;
m_AlertOnLoad.AlertAnimationDuration=300;
m_AlertOnLoad.Show(false);// false指示该控件是否需要获得焦点才出现“BalloonTip”
6.“BalloonTip”除了可以通过“添加控件”的方式使用,也可以通过编程的方式使
用,示例程序如下:
DevComponents.DotNetBar.Balloon b=new DevComponents.DotNetBar.Balloon(); b.Style=eBallonStyle.Alert;
b.CaptionImage=balloonTipFocus.CaptionImage.Clone() as Image;
b.CaptionText="Balloon Status InFormation";
b.Text="Balloons are now enabled for Balloon Tip Test area. Hover mouse over th e area and set the focus to any control.";
b.AlertAnimation=eAlertAnimation.TopToBottom;
b.AutoResize();
b.AutoClose=true;
b.AutoCloseTimeOut=4;
b.Owner=this;// 指示父控件
b.Show(button2,false);// button2指示在那个控件附近出现“BalloonTip”
7.还可以对“BalloonTip”出现时的效果进行程序控制,如下:
// BalloonTriggerControl property returns control that invoked balloon
// BalloonTriggerControl属性返回触发“BalloonTip”的控件
if(balloonTipHover.BalloonTriggerControl==groupBox1)
{
// BalloonControl is already prepared Balloon control that is just about to be displayed
// Setting BalloonControl to null will cancel balloon display
Point p=Control.MousePosition;
// Adjust cursor position so cursor is below tip
p.Offset(-balloonTipHover.BalloonControl.TipOffset,balloonTipHover.BalloonCont rol.TipLength+4);
//Offset属性将点p进行平移
balloonTipHover.BalloonControl.Location=p;
}
8.与之类似的是DotNetToolTip所有控件都有的“ToolTip”属性,也可以是控件在
鼠标划过时出现类似的东西,如下图:
三、DotNetBarManager控件与Bar控件的使用
示例效果如下图:
1.DotNetBarManager控件
将该控件添加到工程后,将给Bar控件提供了“停靠点(DockSite)”,可以实现工具栏在窗体的“上、下、左、右”摆放。

可以通过程序实现,也可以通过“属性页”的“Dock”属性进行设置。

bar.DockSide = eDockSide.Top;
2.DotNetBarManager控件,通过右键菜单
可以轻松实现如下图所示的布局。

通过拖动也可以轻易的实现如下视图的布局
与上图相应的代码:
// Create new document and add it to existing bar
DevComponents.DotNetBar.DockContainerItem DockItem=new DevComponents.DotN etBar.DockContainerItem();
DockItem.Text="Custom Document";
// Add control to it
TextBox t=new TextBox();
t.Autosize=false;
t.Multiline=true;
t.Text=DockItem.Text;
// PanelDockContainer will be used to host any controls. It provides automatic foc us management so focused
// document tab appears bold
DevComponents.DotNetBar.PanelDockContainer panel = new DevComponents.DotN etBar.PanelDockContainer();
t.Dock = DockStyle.Fill;
panel.Controls.Add(t);
DockItem.Control=panel;
bar1.Items.Add(DockItem);
//添加第二个选项卡
/******************************************************************************************** ********/
DevComponents.DotNetBar.DockContainerItem DockItem1= new DevComponents.D otNetBar.DockContainerItem();
DockItem1.Text= "This is the second!";
Label l= new Label();
l.Text= DockItem1.Text;
DevComponents.DotNetBar.PanelDockContainer panel1= new DevComponents.DotN etBar.PanelDockContainer();
l.Dock= DockStyle.Fill;
panel1.Controls.Add(l);
DockItem1.Control= panel1;
bar1.Items.Add(DockItem1);
/******************************************************************************************** ********/
if(!bar1.Visible)
bar1.Visible=true;
else
bar1.RecalcLayout();
// Optimize display by disabling layout for all Dock sites dotNetBarManager1.SuspendLayout=true;
try
{
foreach(DevComponents.DotNetBar.Bar bar in dotNetBarManager1.Bars)
{
if(bar.DockSide==DevComponents.DotNetBar.eDockSide.Document)
{
foreach(DevComponents.DotNetBar.DockContainerItem Dock in bar.Item s)
Dock.Visible=true;
}
if(!bar.Visible)
bar.Visible=true;
}
}
finally
{
dotNetBarManager1.SuspendLayout=false;
}
代码实现的界面如下图:
3.下面的代码通过编程的方式实现如下图所示的功能
private void Form1_Load(object sender,System.EventArgs e)
{
dotNetBarManager1.DockTabChange+=new DotNetBarManager.DockTabChangeE ventHandler(this.DockTabChanged);
CreateBottomBarAutoHide();
CreateLeftDockedBars();
}
private void DockTabChanged(object sender,DockTabChangeEventArgs e)
{
// 使Bar的标题与当前停靠选项卡同步
Bar bar=sender as Bar;
if(bar==null|| e.NewTab==null)
return;
bar.Text=e.NewTab.Text;
}
private void CreateBottomBarAutoHide()
{
Bar bar=new Bar("Bottom Bar in auto-hide state");
="bottomBar";
youtType=eLayoutType.DockContainer; // 停靠容器布局需要可停靠窗口bar.Stretch=true; // 可停靠窗口拉伸至填补容器
bar.AutoHideAnimationTime=0; // 一些控件不支持动画所以关掉它
bar.GrabHandleStyle=eGrabHandleStyle.Caption; // 可停靠窗口有标题
dotNetBarManager1.Bars.Add(bar); // DotNetBar需要添加bar以便能管理它的停靠等
// 创建托管控件
DockContainerItem DockItem=new DockContainerItem("bottomDockItem1","Fir
st Dock item");
bar.Items.Add(DockItem);
// 创建我们想放在可停靠窗口的控件
UserControl1DockedControl=new UserControl1();
bel1.Text=+" - "+DockItem.Text;
DockedControl.BackColor=Color.Azure;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上
DockItem.Height=128; // 指定可停靠容器的高度和同一时间控制
// 创建第二个停靠容器并添加到Bar中
DockItem=new DockContainerItem("bottomDockItem2","Second Dock item");
bar.Items.Add(DockItem);
DockedControl=new UserControl1();
bel1.Text=+" - "+DockItem.Text;
DockedControl.BackColor=Color.Aquamarine;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上
// 将Bar停靠到下面的停靠位置
dotNetBarManager1.BottomDockSite.GetDocumentUIManager().Dock(bar);
DockItem.Height=128; // 指定可停靠容器的高度和同一时间控制
bar.RecalcLayout(); // 适用所有的变化...
bar.AutoHide=true; // 将Bar置为自动隐藏模式。

Bar需要停靠的地方,才能置为自动隐藏模式
}
private void CreateLeftDockedBars()
{
// 将前两个Bar并排停靠并将第三个Bar停靠在他们之后...
Bar bar=new Bar("Bar1");
="leftBar1";
youtType=eLayoutType.DockContainer; // 停靠容器布局需要可停靠窗口bar.Stretch=true; // 可停靠窗口拉伸至填补容器
bar.AutoHideAnimationTime=0; // 一些控件不支持动画所以关掉它
bar.GrabHandleStyle=eGrabHandleStyle.Caption; // 可停靠窗口有标题
bar.CanHide=true;
// 为Bar创建DockContainerItem,该项应该在Bar停靠前添加
DockContainerItem DockItem=new DockContainerItem("leftDockItem1","Top Le ft Dock Container");
bar.Items.Add(DockItem);
// 创建我们想放在可停靠窗口的控件
UserControl1DockedControl=new UserControl1();
bel1.Text=+" - "+DockItem.Text;
DockedControl.BackColor=Color.Khaki;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上
dotNetBarManager1.Bars.Add(bar); // DotNetBar需要添加bar以便能管理它的停靠等
dotNetBarManager1.LeftDockSite.GetDocumentUIManager().Dock(bar); // 将Bar停靠到左边的可停靠位置
DockItem.Width=128; // 在停靠之后指定停靠容器项的宽度
// 创建第二个Bar并将它停靠低于第一个Bar但仍在同一行
Bar bar2=new Bar("Bar2");
="leftBar2";
youtType=eLayoutType.DockContainer; // 停靠容器布局需要可停靠窗口bar2.AutoHideAnimationTime=0; // 一些控件不支持动画所以关掉它
bar2.Stretch=true; // 可停靠窗口拉伸至填补容器
bar2.CanHide=true;
bar2.GrabHandleStyle=eGrabHandleStyle.Caption; // 可停靠窗口有标题
// 添加新的停靠容器到Bar上,应该在添加Bar之前执行以便大小可以计算正确
DockItem=new DockContainerItem("leftDockItem2","Bottom Left Dock Contain er");
bar2.Items.Add(DockItem);
// 创建我们想放在可停靠窗口的控件
DockedControl=new UserControl1();
bel1.Text=+" - "+DockItem.Text;
DockedControl.BackColor=vender;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上
dotNetBarManager1.Bars.Add(bar2); // DotNetBar需要添加bar以便能管理它的停靠等
dotNetBarManager1.LeftDockSite.GetDocumentUIManager().Dock(bar,bar2,e DockSide.Bottom); // 停靠新bar2低于我们先前创建的Bar
// 创建第三个Bar,停靠在第一个和第二个之后
// i.e. on the line 1
bar=new Bar("Bar3");
="leftBar3";
youtType=eLayoutType.DockContainer; // 停靠容器布局需要可停靠窗口bar.AutoHideAnimationTime=0; // 一些控件不支持动画所以关掉它
bar.Stretch=true; // 可停靠窗口拉伸至填补容器
bar.CanHide=true;
bar.GrabHandleStyle=eGrabHandleStyle.Caption; // 可停靠窗口有标题
DockItem=new DockContainerItem("leftDockItem3","Left Dock Container line 1 ");
bar.Items.Add(DockItem);
// 创建我们想放在可停靠窗口的控件
DockedControl=new UserControl1();
bel1.Text=+" - "+DockItem.Text;
DockedControl.BackColor=Color.LemonChiffon;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上
dotNetBarManager1.Bars.Add(bar); // DotNetBar需要添加bar以便能管理它的停靠等
dotNetBarManager1.LeftDockSite.GetDocumentUIManager().Dock(bar);
// 设置停靠点的宽度并将bars按比例停靠在里面
// 但是这个尺寸应该大到足以容纳所有的Bar包括约束像MinimumSize等等
dotNetBarManager1.LeftDockSite.Width = 150;
}
BaseItem::定义了DotNetBar使用的项的基类
示例:
BaseItem item = sender as BaseItem;
4.添加“菜单项“也可以通过两种方式实现
1)“可视化“的方式
在“设计器“里可以通过”右键“来实现;
2)程序的方法
private void CreateBar()
{
//创建Bar
Bar bar=new Bar("Standard");
bar.CanHide=true;
bar.Style=eDotNetBarStyle.Office2003;
bar.GrabHandleStyle=eGrabHandleStyle.StripeFlat;
bar.WrapItemsDock=true;
bar.WrapItemsFloat=false;
// 向Bar内添加项
ButtonItem item,fileItem;
// 添加新建菜单
item=new ButtonItem("bNew");
item.ImageIndex=0;
// item.Image = imageList1.Images[0];
item.Text="&New";
item.Shortcuts.Add(eShortcut.CtrlN);
item.Category="Standard";
bar.Items.Add(item);
m_DotNetBar.Items.Add(item.Copy()); // 这将创建类别条目
// 添加打开菜单
item=new ButtonItem("bOpen");
item.ImageIndex=1;
item.Text="&Open";
item.Shortcuts.Add(eShortcut.CtrlO);
item.Category="Standard";
bar.Items.Add(item);
m_DotNetBar.Items.Add(item.Copy());
// 添加子菜单项到打开菜单,例如最近使用的文件之类的东西fileItem=new ButtonItem("file1");
fileItem.Text="&1. File1.txt";
item.SubItems.Add(fileItem);
fileItem=new ButtonItem("file2");
fileItem.Text="&2. File2.txt";
item.SubItems.Add(fileItem);
fileItem=new ButtonItem("file3");
fileItem.Text="&3. File3.txt";
item.SubItems.Add(fileItem);
fileItem=new ButtonItem("file4");
fileItem.Text="&4. File4.txt";
item.SubItems.Add(fileItem);
fileItem=new ButtonItem("file5");
fileItem.Text="&5. File5.txt";
item.SubItems.Add(fileItem);
// 添加关闭菜单
item=new ButtonItem("bClose"); item.ImageIndex=2;
item.Text="&Close";
item.Shortcuts.Add(eShortcut.CtrlX); item.Category="Standard";
bar.Items.Add(item);
m_DotNetBar.Items.Add(item.Copy());
// 添加保存菜单
item=new ButtonItem("bSave"); item.ImageIndex=3;
item.Text="&Save";
item.Shortcuts.Add(eShortcut.CtrlS); item.Category="Standard";
bar.Items.Add(item);
m_DotNetBar.Items.Add(item.Copy());
// 添加打印预览菜单
item=new ButtonItem("bPrintPreview"); item.ImageIndex=6;
item.Text="Print Pre&view";
item.Category="Standard";
item.BeginGroup=true;
bar.Items.Add(item);
m_DotNetBar.Items.Add(item.Copy());
// 添加打印菜单
item=new ButtonItem("bPrint"); item.ImageIndex=5;
item.Text="&Print";
item.Category="Standard";
item.Shortcuts.Add(eShortcut.CtrlP); bar.Items.Add(item);
m_DotNetBar.Items.Add(item.Copy());
// 添加邮件菜单
item=new ButtonItem("bEmail"); item.ImageIndex=4;
item.Text="&Email";
item.Category="Standard";
item.BeginGroup=true;
bar.Items.Add(item);
m_DotNetBar.Items.Add(item.Copy());
// 添加“添加/删除“按钮
CustomizeItem citem=new CustomizeItem();
bar.Items.Add(citem);
// 由于我们将使用ImageList,Bar酒吧必须被添加到DotNetBarManager中
// 将Bar加入DotNetBarManager
m_DotNetBar.Bars.Add(bar);
bar.DockSide=eDockSide.Top;
}
5.为所有选项添加“事件”
this.m_DotNetBar.ItemClick += new System.EventHandler(this.BarItemClick);
private void BarItemClick(object sender,EventArgs e)
{
BaseItem item = sender as BaseItem;
if(item == null|| == ""|| item.SystemItem)
return;
MessageBox.Show("Item '"+ + "' clicked");
}
6.设置窗体的大小
AutoScaleBaseSize属性的值在窗体显示时使用,用来计算该窗体的缩放因子。

窗体将自动缩放基大小(用作与系统的字体大小进行比较的基准),以确定使用自动缩放时窗体的缩放量。

如果要确定根据特定字体窗体将自动缩放到的大小,请使用GetAutoScaleSiz e方法。

示例:
this.AutoScaleBaseSize = new System.Drawing.Size(11,17);
该属性将按着Size(a,b)内a与b的比例大小自动调整窗口大小,但是值得注意的是:a与b的绝对值越大,窗口越小。

//设置工作区域的大小
this.ClientSize = new System.Drawing.Size(351,207);
四、ImageList组件
1.概述
ImageList组件就是一个图像列表。

一般情况下,这个属性用于存储一个图像集合,这些图像用作工具栏图标或TreeView控件上的图标。

许多控件都包含ImageList属性。

这个属性一般和ImageIndex属性一起使用。

ImageList属性设置为ImageList组件的一个实例,ImageIndex属性设置为ImageList中应在控件中显示的图像的索引。

使用ImageIndex.Ima ges属性的Add方法可以把图像添加到ImageList组件中。

Images属性返回一个ImageCo llection。

两个最常用的属性是ImageSize和ColorDepth。

ImageSize使用Size结构作为其值。

其默认值是16×16,但可以取1~256之间的任意值。

ColorDepth使用ColorDepth枚举作为其值。

颜色深度值可以从4位~32位。

在.NET Framework 1.1中,默认是ColorDepth. Depth8Bit。

2.示例
private System.Windows.Forms.ImageList imageList1;
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.
GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
// 下面加几个Image
this.imageList1.Images.SetKeyName(0,"acrobat.ico");
this.imageList1.Images.SetKeyName(1,"address book.ico");
this.imageList1.Images.SetKeyName(2,"adjust colour.ico");
//把imageList1赋给treeView1
this.treeView1.ImageIndex = 0;
this.treeView1.ImageList = this.imageList1;
this.treeView1.Location = new System.Drawing.Point(3,3);
= "treeView1";
this.treeView1.SelectedImageIndex = 0;
this.treeView1.Size = new System.Drawing.Size(579,450);
this.treeView1.TabIndex = 0;
// 以上code在Designer完成
// 在添加TreeNode的时候,把Image加上
// 未选中时,这个node显示imageList1中的"acrobat.ico",选中后显示"address book. ico"
TreeNode node = new TreeNode("TreeNodeName",0,1);
treeView1.Nodes.Add(node);
treeView1.ExpandAll();
3.讨论
1)ImageList里面的图片的颜色
2)ImageList里面的图片的大小
引起ImageList里面图片颜色失真的原因是在Design-Time就在中往ImageLi st里面添加了Images。

当用户一边在“Image Collection Editor”对话框里面添加图片,一边就已经把这些图片装载到resource文件里面了。

这样,以后程序运行时就只需要访问resource文件就可以载入所有图片而不需要依赖原始的图片文件。

但是问题在于从结果看,当在Design-Time往resource文件里面添加图片时并没有使用用户指定的ColorDepth(例如Depth32Bit),而用了ImageList.ColorDepth 的默认值(Depth8Bit)。

这样,等程序运行时,即使ImageList.ColorDepth指定了Depth32 Bit也无济于事,因为原始的素材本身只有8bit的颜色。

这基本上就是失真的问题的原因。

因此,解决方案是:不在Design-Time用往ImageList里面添加图片,而是在程序运行时先指定32Bit的ColorDepth,然后再添加图片,如以下例子代码:
this.imageList1.ColorDepth=ColorDepth.Depth32Bit;
this.imageList1.Images.Add(Image.FromFile(@"C:\Inetpub\wwwroot\winxp.gif")); this.imageList1.Images.Add(Image.FromFile(@"C:\Inetpub\wwwroot\images\init_dot net.gif"));
this.imageList1.Images.Add(Image.FromFile(@"C:\Inetpub\wwwroot\images\mslogo. gif"));
this.imageList1.Images.Add(Image.FromFile(@"C:\Inetpub\wwwroot\images\mslogo
2.gif"));
这里需要注意的是,必须先指定ColorDepth,然后再添加图片。

因为对ColorDepth 赋值会清空所有图片。

BTW,ImageList.ColorDepth的默认值是Depth8Bit,而非文档上所述Depth4Bit。

这一点很容易可以通过写一段例子代码来验证,也可以通过很多Decompil er来查看ImageList的构造函数的实现来验证。

的确,通过ImageList.Images[i]获得图片的大小都是统一的,都等于ImageList.Image Size。

这个问题的原因在于ImageList在返回Images[i]的过程中并没有返回原始的图片,而是按照ImageList.ImageSize创建了一个新的Bitmap,并把原始图片的内容重新绘制上去以后再返回给用户。

关于这一点,可以用一些Decompiler工具如ILDASM.exe或者Ana krino通过察看私有函数ImageList.GetBitmap(int index)来验证。

我想现在paulluo0739应该能够理解为什么ImageList里面的图片都是一样大的了。

ImageSize同ColorDepth类似,也不宜在运行时改动,一旦重新赋值,就会清空所有的图片。

因此,如果程序运行时需要某一图片的不同大小的版本,可以考虑使用多个不同I mageSize的ImageList。

4.关于ImageList组件的用法还存在问题
五、控件BubbleBar的使用
1.使用效果
2.其实使用很简单,只有将BubbleBar控件拖到窗体上,然后,就可以添加“Tab”
和“Button”了。

3.一些有用的语句
private void bubbleButton_Click(object sender,DevComponents.DotNetBar.ClickEve ntArgs e)
{
DevComponents.DotNetBar.BubbleButton button=sender as DevComponents.Dot NetBar.BubbleButton;
textBox1.Text=+","+button.TooltipText;
}
private void checkBox2_CheckedChanged(object sender,System.EventArgs e)
{
if(checkBox2.Checked)
bubbleBar1.ButtonBackgroundStretch=true;
else
bubbleBar1.ButtonBackgroundStretch=false;
// Apply UI changes and refresh
//刷新
bubbleBar1.RecalcLayout();
bubbleBar1.Refresh();
}
private void numericUpDown1_ValueChanged(object sender,System.EventArgs e) {
// 图像分配给控件时总是匹配最佳外观的尺寸是最好的
bubbleBar1.ImageSizeNormal=new Size((int)numericUpDown1.Value,(int)numeric UpDown1.Value);
bubbleBar1.RecalcLayout();
bubbleBar1.Refresh();
}
六、控件DataGridViewX的使用
1.说明
(1)控件DataGridView与DataGridView的基本用法类似。

(2)DataGridView有自动按列排序的功能。

(3)dataGridViewX1.SelectedRows.Count。

(4)dataGridViewX1.SelectedRows[0].Cells[0].Value.ToString()。

2.DataGridView的示例代码
#region 设置DataGridView的显示格式
dgvMachinceList.AutosizeColumnsMode = System.Windows.Forms.DataGridViewAutos izeColumnsMode.Fill;
dgvMachinceList.AutoGenerateColumns = false;
dgvMachinceList.AllowUserToAddRows = false;
dgvMachinceList.AllowUserToResizeColumns = true;
//////////////////////////////////////////////////////
TabControlPanel tcp;
foreach(Control c in tabControl1.Controls)
if(c is TabControlPanel)
{
tcp = (TabControlPanel)c;
tcp.Style.BackColor1.Color = Color.FromArgb(227,239,255);
tcp.Style.BackColor2.Color = Color.FromArgb(175,210,255);
foreach(Control ctrl in tcp.Controls)
{
if(ctrl is DevComponents.DotNetBar.Controls.DataGridViewX)
{
DevComponents.DotNetBar.Controls.DataGridViewX dgv = (DevCom ponents.DotNetBar.Controls.DataGridViewX)ctrl;
dgv.AutoGenerateColumns = false;
dgv.BackgroundColor = Color.FromArgb(227,239,255);
dgv.AllowUserToAddRows = false;
dgv.AllowUserToDeleteRows = false;
//dgv.Autosize = false;
dgv.AutosizeColumnsMode = System.Windows.Forms.DataGridView AutosizeColumnsMode.Fill;
dgv.AutosizeRowsMode = System.Windows.Forms.DataGridViewAut osizeRowsMode.AllCells;
dgv.AllowUserToResizeColumns = true;
//dgv.RowHeadersWidth = 900;
dgv.MultiSelect = false;
dgv.ReadOnly = true;
dgv.RowHeadersVisible = false;
dgv.ScrollBars = System.Windows.Forms.ScrollBars.Both;
dgv.SelectionMode = System.Windows.Forms.DataGridViewSelection Mode.FullRowSelect;
}
}
}
dgvHardwareList.DataBindings.Clear();
dgvMachinceList.DataBindings.Clear();
dgvFileOpLog.DataBindings.Clear();
dgvSoftwareList.DataBindings.Clear();
dgvUserList.DataBindings.Clear();
dgvLogInfoList.DataBindings.Clear();
dgvHardwareChangeLog.DataBindings.Clear();
dgvHardwareList.Columns.Add("HID","硬件ID号"); —————————————————图片示例——————————————————
dgvHardwareList.Columns.Add("HType","硬件类型");
dgvHardwareList.Columns.Add("HDetails","硬件信息");
dgvHardwareList.Columns.Add("MID","所属机器ID号");
dgvHardwareList.Columns.Add("IP","所属机器的IP地址");
foreach(DataGridViewColumn col in dgvHardwareList.Columns)
col.DataPropertyName = ;
—————————————————图片示例——————————————————
dgvMachinceList.Columns.Add("MID","机器ID");
dgvMachinceList.Columns.Add("MName","机器名");
dgvMachinceList.Columns.Add("UID","用户ID");
dgvMachinceList.Columns["UID"].Visible = false;
dgvMachinceList.Columns.Add("UName","用户名");
dgvMachinceList.Columns.Add("IP","IP地址");
dgvMachinceList.Columns.Add("DeptID","DeptID");
dgvMachinceList.Columns["DeptID"].Visible = false;
dgvMachinceList.Columns.Add("Department","所属部门");
foreach(DataGridViewColumn col in dgvMachinceList.Columns)
col.DataPropertyName = ;
dgvFileOpLog.DataSource = fileoplogbll.ListByMachine(m.MID ,tbLFileOpLogNu m.Value );
// 怎样获得鼠标右击处的行
DataGridView.HitTestInfo hittestinfo = dgvMachinceList.HitTest(e.X,e.Y);
dgvMachinceList.Rows[hittestinfo.RowIndex].Selected = true;
七、控件Color Picker的使用
1.使用效果:
1)单击相应的按钮,工作区(整体)的颜色发生变化。

2)随着鼠标在各种颜色上的移动,工作区(整体)的颜色随着变化。

3)还可以选择“More Colors”进一步改变工作区的颜色。

2.下面是相应的代码
private bool m_ColorSelected = false;
private eOffice2007ColorScheme m_BaseColorScheme = eOffice2007ColorScheme.Blu e;
// 预览,随着鼠标在各种颜色上的移动,工作区(整体)的颜色随着变
private void colorPickerDropDown1_ColorPreview(object sender,ColorPreviewEvent Args e)
{
RibbonPredefinedColorSchemes.ChangeOffice2007ColorTable(m_BaseColorSchem e,e.Color);
//在colorPickerDropDown1上选择颜色后,工作区(整体)的颜色随着变
private void colorPickerDropDown1_ExpandChange(object sender,EventArgs e) //扩展区域弹出后,所激发的事件
{
if(colorPickerDropDown1.Expanded)
{
// 刚弹出,则初始化一个颜色值
// Remember the starting color scheme to apply if no color is selected d uring live-preview
m_ColorSelected = false;
m_BaseColorScheme = ((Office2007Renderer)GlobalManager.Renderer).Color Table.InitialColorScheme;
}
else //否则,是“隐去”
{
if(!m_ColorSelected)
{
RibbonPredefinedColorSchemes.ChangeOffice2007ColorTable(m_BaseCol orScheme);
}
}
// 选择颜色后,发生的事件
private void colorPickerDropDown1_SelectedColorChanged(object sender,EventArg s e)
{
m_ColorSelected = true; // Indicate that color was selected for buttonStyleCus tom_ExpandChange method
RibbonPredefinedColorSchemes.ChangeOffice2007ColorTable(m_BaseColorSchem e,colorPickerDropDown1.SelectedColor);
}
3.说明
1)初始化一个颜色值
m_BaseColorScheme = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.Initi alColorScheme;
2)改变颜色值
RibbonPredefinedColorSchemes.ChangeOffice2007ColorTable(m_BaseColorScheme,c olorPickerDropDown1.SelectedColor);
3)应用颜色值
RibbonPredefinedColorSchemes.ChangeOffice2007ColorTable(m_BaseColorScheme);
4.工作区的控件的颜色有可能不同时变化
原因:是各个控件的“Style”和“ColorSchemeStyle”采用的风格不统一
解决办法:都采用一种风格,如“Office2007”即可
DevComponents.DotNetBar.Rendering.eOffice2007ColorScheme.Silver
八、控件SideBar的使用
1.功能
可实现如下图似的的分组:
2.实现方式
1)右键——>“Add Panel”,进行“分组”。

2)对每一个组进行设置。

3)右键,对每一个组,添加控件。

3.该控件的颜色策略
——DevComponents.DotNetBar.eSideBarColorScheme
scheme=(DevComponents.DotNetBar.eSideBarColorScheme)Enum.Parse(typeof(DevCo mponents.DotNetBar.eSideBarColorScheme),sSel,false);
sideBar1.PredefinedColorScheme=scheme;
private void sideBar1_ItemClick(object sender,System.EventArgs e)
{
DevComponents.DotNetBar.BaseItem item=sender as DevComponents.DotNetBar. BaseItem;
richTextBox1.Text="ItemClick: "+ item.Text+" ("++")\n"+richTextBox1. Text;
}
九、Enum枚举类
1.Enum.GetUnderlyingType 方法
--返回指定枚举的基础类型。

-public static Type GetUnderlyingType(Type enumType)
参数:
enumType
类型:System.Type枚举类型。

返回值:
类型:System.Type enumType的基础Type。

--示例
static object GetAsUnderlyingType(Enum enval)
{
Type entype = enval.GetType();
Type undertype = Enum.GetUnderlyingType(entype);
return Convert.ChangeType( enval,undertype );
}
2.Enum.GetName 方法
--在指定枚举中检索具有指定值的常数的名称。

- public static string GetName( Type enumType,Object value)
参数:
enumType
类型:System.Type
枚举类型。

value
类型:System.Object
特定枚举常数的值(根据其基础类型)。

返回值:
类型:System.String
一个字符串,该字符串包含enumType的枚举常数的名称,该常数的值为value;或者,如果没有找到这样的常数,则为nullNothingnullptrnull引用(在Visual Basic中为Nothing)。

--示例
using System;
public class GetNameTest
{
enum Colors { Red,Green,Blue,Yellow };
enum Styles { Plaid,Striped,Tartan,Corduroy };
public static void Main()
{
Console.WriteLine("The 4th value of the Colors Enum is {0}",Enum.GetN ame(typeof(Colors),3));
Console.WriteLine("The 4th value of the Styles Enum is {0}",Enum.GetNa me(typeof(Styles),3));
}
}
3.Enum.GetNames 方法
--检索指定枚举中常数名称的数组。

--public static string[] GetNames( Type enumType)
参数:
enumType
类型:System..::.Type
枚举类型。

返回值:
类型:array<System.String>[]()[]
enumType的常数名称的字符串数组。

--示例
using System;
public class GetNamesTest
{
enum Colors { Red,Green,Blue,Yellow };
enum Styles { Plaid,Striped,Tartan,Corduroy };
public static void Main()
{
Console.WriteLine("The values of the Colors Enum are:");
foreach(string s in Enum.GetNames(typeof(Colors)))
Console.WriteLine(s);
Console.WriteLine();
Console.WriteLine("The values of the Styles Enum are:");
foreach(string s in Enum.GetNames(typeof(Styles)))
Console.WriteLine(s);
}
}
4.Enum.GetValues 方法
--检索指定枚举中常数值的数组。

--public static Array GetValues( Type enumType)
参数:
enumType
类型:System.Type
枚举类型。

返回值:
类型:System.Array
enumType的常数值的Array。

该数组的元素按枚举常数的二进制值排序。

--示例
using System;
public class GetValuesTest
{
enum Colors { Red,Green,Blue,Yellow };
enum Styles { Plaid = 0,Striped = 23,T artan = 65,Corduroy = 78 };
public static void Main()
{
Console.WriteLine("The values of the Colors Enum are:");
foreach(int i in Enum.GetValues(typeof(Colors)))
Console.WriteLine(i);
Console.WriteLine();
Console.WriteLine("The values of the Styles Enum are:");
foreach(int i in Enum.GetValues(typeof(Styles)))
Console.WriteLine(i);
}
}
// The example produces the following output:
// The values of the Colors Enum are:
// 0
// 1
// 2
// 3
//
// The values of the Styles Enum are:
// 0
// 23
// 65
// 78
5.Enum..::.Parse 方法
--将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。

1)示例:
Enum.GetNames(typeof(DevComponents.DotNetBar.eSideBarColorScheme)) (DevComponents.DotNetBar.eSideBarColorScheme)Enum.Parse(typeof(DevComponent s.DotNetBar.eSideBarColorScheme),sSel,false)
十、Money Style
1.示例代码1
// File
menu=new ButtonItem("mFile","&File");
bar.Items.Add(menu);
// New
menuItem=new ButtonItem("mNew","New");
menu.SubItems.Add(menuItem);
// Open
menuItem=new ButtonItem("mOpen","&Open");
menuItem.Shortcuts.Add(eShortcut.CtrlO);
menu.SubItems.Add(menuItem);
// Password manager
menuItem=new ButtonItem("mPasswordManager","Password Manager"); menuItem.BeginGroup=true;// 在该按钮前加一条线
menu.SubItems.Add(menuItem);
// Backup
menuItem=new ButtonItem("mBackup","&Back Up..."); menuItem.BeginGroup=true;// 在该按钮前加一条线menu.SubItems.Add(menuItem);
// Restore
menuItem=new ButtonItem("mRestore","&Restore..."); menu.SubItems.Add(menuItem);
// Archive
menuItem=new ButtonItem("mArchive","&Archive..."); menu.SubItems.Add(menuItem);
// Exit
menuItem=new ButtonItem("mExit","E&xit"); menuItem.BeginGroup=true;
menu.SubItems.Add(menuItem);
// 将新建的Bar添加到dotNetBarManager1 dotNetBarManager1.Bars.Add(bar);
// 然后,设置摆放位置
bar.DockSide=eDockSide.Top;
2.示例代码2
// 标准工具栏Standard Toolbar
bar=new Bar("Standard");
// 当被添加到DotNetBarManager.Bars集合里时,风格匹配将被设置在Bar里的其他风格是重要的
bar.Style=dotNetBarManager1.Style;
="barStandard";
bar.Stretch=true;
bar.EqualButtonSize=true;
bar.DisplayMoreItemsOnMenu=true;
bar.BackgroundImage=new Bitmap(this.GetType(),"background.png");
bar.BackgroundImagePosition=eBackgroundImagePosition.Tile;// 平铺覆盖SetToolbarColorScheme(bar.ColorScheme);
// 必须添加bar到bars集合里,以便DotNetBarManager能知道它dotNetBarManager1.Bars.Add(bar);
// 设置最初停靠线
bar.DockLine=1;
// 当DotNetBarManager知道它后,我们可以将它停靠在适当的一边
bar.DockSide=eDockSide.Top;
// Account List
bar.Items.Add(CreateToolbarButton("bAccountList","Account List","AccountList.png ","AccountListHot.png"));
// Portofolio。

相关文档
最新文档