DotNetBar第三方控件使用笔记(8)

2019-08-31 12:30

if(m_LastMouseOverNode != null) ShowNodeTooltip(m_LastMouseOverNode); }

private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { // 当任何都是可见时隐藏tooltip HideNodeTooltip(); }

private void superTooltipWithLink_MarkupLinkClick(object sender, DevComponents.DotNetBar.MarkupLinkClickEventArgs e) { MessageBox.Show(\Link Clicked. href = \ + e.HRef); }

控件expandableSplitter和控件TabControl的使用

expandableSplitter控件的使用示例

控件expandableSplitter将容器的可显示区域分成两个可以调整大小的区域。 建议用法:

1)从左到右,按顺序,一次,拖入如下控件,某个容器控件(Dock设置为Left),ExpandableSplitter控件(Dock设置为Left)以及另一个容器控件(Dock设置为Fill)

2)如果想实现“在控件expandableSplitter 的SplitterBar上单击一下,也能将该控件控制的区域收起或放开“的功能,可在属性

设置。

注意的是:在选项中,选择那个控件,那在单击“SplitterBar“时,就收起或打开哪个控件。

3)从网上下载的相关资料

DotNetBar中ExpandableSplitter使用技巧

为了实现如下图1到图2效果,用ExpandableSplitter很方便,设置ExpandableSplitter的ExpandedControl属性为panelEx_Right即可。

但是想实现图3的效果,本以为用这个控件加上Form的Autosize属性即可。没想搞了半天发现不管是Form用Autosize让panel_right的Dock为Fill,还是panel_right锚定都无法实现这个效果。

图1

图2

仔细想想,Autosize肯定不行,其和Dock在实现上就是是矛盾的,呵呵。 真是懒习惯了,动手加下边几句就可以解决,在这里记录一下。 public partial class Test : Form { // 记录右侧Panel宽度 private int m_RightWidth = 0; public Test() { InitializeComponent(); m_RightWidth = panelEx_Right.Width; }

private void expandableSplitter_Click(object sender, EventArgs e) {

if (expandableSplitter.Expanded) { m_RightWidth = panelEx_Right.Width; this.Width -= m_RightWidth; } else { this.Width += m_RightWidth; } } }

图3

另外记得设置MinExtra属性为0,不然ExpandableSplitter拖不到最边上。

关于控件TabControl的比较高级的用法示例

private void itemPanel1_ItemClick(object sender, System.EventArgs e) { ButtonItem button = sender as ButtonItem; if(button==null) return; eTabStripStyle style = (eTabStripStyle)Enum.Parse(typeof(eTabStripStyle),n.Name); SetTabStyle(style); itemPanel1.RecalcLayout(); }

private void ChangeTabColor(object sender, EventArgs e)

butto {

if(m_TabMouseDown != null) {

m_TabMouseDown.PredefinedColor=(eTabItemColor)Enum.Parse(typeof(eTabItemColor),((BaseItem)sender).Text); }

}

private void SetTabStyle(eTabStripStyle style) { tabControl1.Style=style; foreach(TabItem tab in tabControl1.Tabs) tab.PredefinedColor=eTabItemColor.Default; }

private void tabControl1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {

if(e.Button != MouseButtons.Right) return; // 转换到上下文菜单的屏幕坐标 Point p=new Point(e.X,e.Y); Point pScreen=tabControl1.PointToScreen(p); TabItem tab=tabControl1.TabStrip.HitTest(p.X,p.Y); if(tab != null) { m_TabMouseDown=tab;

// 创建右键菜单

CreateContextMenu(); ButtonItem item=contextMenuBar1.Items[\] as ButtonItem;

// 弹出右键菜单

item.Popup(pScreen); } }

private void CreateContextMenu() { if(contextMenuBar1.Items.Contains(\)) return; ButtonItem item=new ButtonItem(\,\Colors Context menu\); item.Style=eDotNetBarStyle.Office2003; contextMenuBar1.Items.Add(item);

// 为eTabItemColor的每一个实体创建一个菜单项 string[] names=Enum.GetNames(typeof(eTabItemColor)); foreach(string s in names) { ButtonItem menuItem=new ButtonItem(s,s); // 构建菜单项的图像 TabItem tabTemp=new TabItem(); tabTemp.PredefinedColor=(eTabItemColor)Enum.Parse(typeof(eTabItemColor),s); Bitmap bmp=new Bitmap(16,16,System.Drawing.Imaging.PixelFormat.Format24bppRgb); Graphics g=Graphics.FromImage(bmp); try { g.Clear(SystemColors.Control); Rectangle r=new Rectangle(1,1,14,14); using(System.Drawing.Drawing2D.LinearGradientBrush brush=new System.Drawing.Drawing2D.LinearGradientBrush(r,tabTemp.BackColor,tabTemp.BackColor2,tabTemp.BackColorGradientAngle))g.FillRectangle(brush,r); using(Pen pen=new Pen(Color.DarkGray,1))g.DrawRectangle(pen,r);

} finally

{ g.Dispose(); } bmp.MakeTransparent(SystemColors.Control); menuItem.Image=bmp; menuItem.Click+=new EventHandler(this.ChangeTabColor); item.SubItems.Add(menuItem);

} }

控件Reflection的使用(倒影)

Image与控件Reflection Label可生成如下图所示的效果


DotNetBar第三方控件使用笔记(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高起专-2017网络教育英语一(2)考试试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: