DotNetBar第三方控件使用笔记.doc_第1页
DotNetBar第三方控件使用笔记.doc_第2页
DotNetBar第三方控件使用笔记.doc_第3页
DotNetBar第三方控件使用笔记.doc_第4页
DotNetBar第三方控件使用笔记.doc_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DotNet第三方控件使用笔记1、 ButtonX控件可实现如下效果:(1)在ButtonX上,是否显示图像,取决于“images”属性。(2)在“ButtomItem”控件中,是否“只是显示图像”,“只是文本”,还是“图像和文本都显示”,取决于。2、 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”和“BalloonTipOnHover上的BalloonCaption”属性中,分别设置这两种效果的“标题”属性;2) 在“BalloonTipOnFocus上的BalloonText”和在“BalloonTipOnHover上的BalloonText”属性中,分别设置这两种效果的“显示内容”的属性。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_AlertOnLoad.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 the 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 displayPoint p=Control.MousePosition;/ Adjust cursor position so cursor is below tipp.Offset(-balloonTipHover.BalloonControl.TipOffset,balloonTipHover.BalloonControl.TipLength+4);/Offset属性将点p进行平移balloonTipHover.BalloonControl.Location=p;8. 与之类似的是DotNetToolTip所有控件都有的“ToolTip”属性,也可以是控件在鼠标划过时出现类似的东西,如下图:3、 DotNetBarManager控件与Bar控件的使用示例效果如下图:1. DotNetBarManager控件将该控件添加到工程后,将给Bar控件提供了“停靠点(DockSite)”,可以实现工具栏在窗体的“上、下、左、右”摆放。可以通过程序实现,也可以通过“属性页”的“Dock”属性进行设置。bar.DockSide = eDockSide.Top;2. DotNetBarManager控件,通过右键菜单可以轻松实现如下图所示的布局。通过拖动也可以轻易的实现如下视图的布局与上图相应的代码:/ Create new document and add it to existing barDevComponents.DotNetBar.DockContainerItem DockItem=new DevComponents.DotNetBar.DockContainerItem();DockItem.Text=Custom Document;/ Add control to itTextBox t=new TextBox();t.Autosize=false;t.Multiline=true;t.Text=DockItem.Text;/ PanelDockContainer will be used to host any controls. It provides automatic focus management so focused/ document tab appears boldDevComponents.DotNetBar.PanelDockContainer panel = new DevComponents.DotNetBar.PanelDockContainer();t.Dock = DockStyle.Fill;panel.Controls.Add(t);DockItem.Control=panel;bar1.Items.Add(DockItem);/添加第二个选项卡/*/DevComponents.DotNetBar.DockContainerItem DockItem1 = new DevComponents.DotNetBar.DockContainerItem();DockItem1.Text = This is the second!;Label l = new Label();l.Text = DockItem1.Text;DevComponents.DotNetBar.PanelDockContainer panel1 = new DevComponents.DotNetBar.PanelDockContainer();l.Dock = DockStyle.Fill;panel1.Controls.Add(l);DockItem1.Control = panel1;bar1.Items.Add(DockItem1);/*/if(!bar1.Visible)bar1.Visible=true;elsebar1.RecalcLayout();/ Optimize display by disabling layout for all Dock sitesdotNetBarManager1.SuspendLayout=true;tryforeach(DevComponents.DotNetBar.Bar bar in dotNetBarManager1.Bars)if(bar.DockSide=DevComponents.DotNetBar.eDockSide.Document)foreach(DevComponents.DotNetBar.DockContainerItem Dock in bar.Items)Dock.Visible=true;if(!bar.Visible)bar.Visible=true;finallydotNetBarManager1.SuspendLayout=false;代码实现的界面如下图:3. 下面的代码通过编程的方式实现如下图所示的功能private void Form1_Load(object sender, System.EventArgs e)dotNetBarManager1.DockTabChange+=new DotNetBarManager.DockTabChangeEventHandler(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);bar.Name=bottomBar;bar.LayoutType=eLayoutType.DockContainer; / 停靠容器布局需要可停靠窗口bar.Stretch=true; / 可停靠窗口拉伸至填补容器bar.AutoHideAnimationTime=0; / 一些控件不支持动画所以关掉它bar.GrabHandleStyle=eGrabHandleStyle.Caption; / 可停靠窗口有标题dotNetBarManager1.Bars.Add(bar); / DotNetBar需要添加bar以便能管理它的停靠等/ 创建托管控件DockContainerItem DockItem=new DockContainerItem(bottomDockItem1,First Dock item);bar.Items.Add(DockItem);/ 创建我们想放在可停靠窗口的控件UserControl1 DockedControl=new UserControl1();DockedControl.label1.Text=bar.Name+ - +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();DockedControl.label1.Text=bar.Name+ - +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);bar.Name=leftBar1;bar.LayoutType=eLayoutType.DockContainer; / 停靠容器布局需要可停靠窗口bar.Stretch=true; / 可停靠窗口拉伸至填补容器bar.AutoHideAnimationTime=0; / 一些控件不支持动画所以关掉它bar.GrabHandleStyle=eGrabHandleStyle.Caption; / 可停靠窗口有标题bar.CanHide=true;/ 为Bar创建DockContainerItem,该项应该在Bar停靠前添加DockContainerItem DockItem=new DockContainerItem(leftDockItem1,Top Left Dock Container);bar.Items.Add(DockItem);/ 创建我们想放在可停靠窗口的控件UserControl1 DockedControl=new UserControl1();DockedControl.label1.Text=bar.Name+ - +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);bar2.Name=leftBar2;bar2.LayoutType=eLayoutType.DockContainer; / 停靠容器布局需要可停靠窗口bar2.AutoHideAnimationTime=0; / 一些控件不支持动画所以关掉它bar2.Stretch=true; / 可停靠窗口拉伸至填补容器bar2.CanHide=true;bar2.GrabHandleStyle=eGrabHandleStyle.Caption; / 可停靠窗口有标题/ 添加新的停靠容器到Bar上,应该在添加Bar之前执行以便大小可以计算正确DockItem=new DockContainerItem(leftDockItem2,Bottom Left Dock Container);bar2.Items.Add(DockItem);/ 创建我们想放在可停靠窗口的控件DockedControl=new UserControl1();DockedControl.label1.Text=bar.Name+ - +DockItem.Text;DockedControl.BackColor=Color.Lavender;DockItem.Control=DockedControl; / 指定该控件是托管在停靠容器上dotNetBarManager1.Bars.Add(bar2); / DotNetBar需要添加bar以便能管理它的停靠等 dotNetBarManager1.LeftDockSite.GetDocumentUIManager().Dock(bar, bar2, eDockSide.Bottom); / 停靠新bar2低于我们先前创建的Bar/ 创建第三个Bar,停靠在第一个和第二个之后/ i.e. on the line 1bar=new Bar(Bar3);bar.Name=leftBar3;bar.LayoutType=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();DockedControl.label1.Text=bar.Name+ - +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()/创建BarBar 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.Images0;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加入DotNetBarManagerm_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.Name = | item.SystemItem)return;MessageBox.Show(Item + item.Name + clicked);6. 设置窗体的大小AutoScaleBaseSize属性的值在窗体显示时使用,用来计算该窗体的缩放因子。窗体将自动缩放基大小(用作与系统的字体大小进行比较的基准),以确定使用自动缩放时窗体的缩放量。如果要确定根据特定字体窗体将自动缩放到的大小,请使用GetAutoScaleSize方法。示例:this.AutoScaleBaseSize = new System.Drawing.Size(11, 17);该属性将按着Size(a,b)内a与b的比例大小自动调整窗口大小,但是值得注意的是:a与b的绝对值越大,窗口越小。/设置工作区域的大小this.ClientSize = new System.Drawing.Size(351, 207);4、 ImageList组件1. 概述ImageList组件就是一个图像列表。一般情况下,这个属性用于存储一个图像集合,这些图像用作工具栏图标或TreeView控件上的图标。许多控件都包含ImageList属性。这个属性一般和ImageIndex属性一起使用。ImageList属性设置为ImageList组件的一个实例,ImageIndex属性设置为ImageList中应在控件中显示的图像的索引。使用ImageIndex.Images属性的Add方法可以把图像添加到ImageList组件中。Images属性返回一个ImageCollection。两个最常用的属性是ImageSize和ColorDepth。ImageSize使用Size结构作为其值。其默认值是1616,但可以取1256之间的任意值。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;/ 下面加几个Imagethis.imageList1.Images.SetKeyName(0, acrobat.ico);this.imageList1.Images.SetKeyName(1, address book.ico);this.imageList1.Images.SetKeyName(2, adjust colour.ico);/把imageList1赋给treeView1this.treeView1.ImageIndex = 0;this.treeView1.ImageList = this.imageList1;this.treeView1.Location = new System.Drawing.Point(3, 3);this.treeView1.Name = 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.icoTreeNode node = new TreeNode(TreeNodeName, 0, 1);treeView1.Nodes.Add(node);treeView1.ExpandAll();3. 讨论1) ImageList里面的图片的颜色2) ImageList里面的图片的大小引起ImageList里面图片颜色失真的原因是在Design-Time就在VS.NET中往ImageList里面添加了Images。 当用户一边在“Image Collection Editor”对话框里面添加图片,VS.NET一边就已经把这些图片装载到resource文件里面了。这样,以后程序运行时就只需要访问resource文件就可以载入所有图片而不需要依赖原始的图片文件。 但是问题在于从结果看,当VS.NET在Design-Time往resource文件里面添加图片时并没有使用用户指定的ColorDepth(例如Depth32Bit),而用了ImageList.ColorDepth的默认值(Depth8Bit)。这样,等程序运行时,即使ImageList.ColorDepth指定了Depth32Bit也无济于事,因为原始的素材本身只有8bit的颜色。这基本上就是失真的问题的原因。 因此,解决方案是:不在Design-Time用VS.NET往ImageList里面添加图片,而是在程序运行时先指定32Bit的ColorDepth,然后再添加图片,如以下例子代码: this.imageList1.ColorDepth=ColorDepth.Depth32Bit; this.imageList1.Images.Add(Image.FromFile(C:Inetpubwwwrootwinxp.gif); this.imageList1.Images.Add(Image.FromFile(C:Inetpubwwwrootimagesinit_dotnet.gif); this.imageList1.Images.Add(Image.FromFile(C:Inetpubwwwrootimagesmslogo.gif); this.imageList1.Images.Add(Image.FromFile(C:Inetpubwwwrootimagesmslogo2.gif); 这里需要注意的是,必须先指定ColorDepth,然后再添加图片。因为对ColorDepth赋值会清空所有图片。BTW,ImageList.ColorDepth的默认值是Depth8Bit,而非文档上所述Depth4Bit。这一点很容易可以通过写一段例子代码来验证,也可以通过很多Decompiler来查看ImageList的构造函数的实现来验证。 的确,通过ImageList.Imagesi获得图片的大小都是统一的,都等于ImageList.ImageSize。这个问题的原因在于ImageList在返回Imagesi的过程中并没有返回原始的图片,而是按照ImageList.ImageSize创建了一个新的Bitmap,并把原始图片的内容重新绘制上去以后再返回给用户。关于这一点,可以用一些Decompiler工具如ILDASM.exe或者Anakrino通过察看私有函数ImageList.GetBitmap(int index)来验证。我想现在paulluo0739应该能够理解为什么ImageList里面的图片都是一样大的了。 ImageSize同ColorDepth类似,也不宜在运行时改动,一旦重新赋值,就会清空所有的图片。因此,如果程序运行时需要某一图片的不同大小的版本,可以考虑使用多个不同ImageSize的ImageList。 4. 关于ImageList组件的用法还存在问题5、 控件BubbleBar的使用1. 使用效果2. 其实使用很简单,只有将BubbleBar控件拖到窗体上,然后,就可以添加“Tab”和“Button”了。3. 一些有用的语句private void bubbleButton_Click(object sender, DevComponents.DotNetBar.ClickEventArgs e)DevComponents.DotNetBar.BubbleButton button=sender as DevComponents.DotNetBar.BubbleButton;textBox1.Text=button.Name+, +button.TooltipText;private void checkBox2_CheckedChanged(object sender, System.EventArgs e)if(checkBox2.Checked)bubbleBar1.ButtonBackgroundStretch=true;elsebubbleBar1.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)numericUpDown1.Value);bubbleBar1.RecalcLayout();bubbleBar1.Refresh();6、 控件DataGridViewX的使用1. 说明(1) 控件DataGridView与DataGridView的基本用法类似。(2) DataGridView有自动按列排序的功能。(3) dataGridViewX1.SelectedRows.Count。(4) dataGridViewX1.SelectedRows0.Cells0.Value.ToString()。2. DataGridView的示例代码#region 设置DataGridView的显示格式dgvMachinceList.AutosizeColumnsMode = System.Windows.Forms.DataGridViewAutosizeColumnsMode.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 = (DevComponents.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.DataGr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论