我想实现如下样式的DataGridView?? 直接用TreeView做不行吗?无非是横行上多些内容. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不一定要在DataGridView下实现这种效果,比如有和这个类似的控件也行请各位大侠指点,在线等...谢谢! thanks to zhangyu_xl:请问怎么实现,“wbs代码”和“wbs名称”两列的值怎么办,treeview 只是在单列中? treeview可以实现左边的树形节点 用TreeView 加一个ListView Detail模式,两个的onselectitemchanged 处理一下就行了。 写个自定义控件,由datagridview与treeview组成,似乎与你的效果会不一样,不过也是好主意外表会不一样,写还是简单. thanks to nooning:你的思路很好,能举个例子吗? 何苦呢,直接用三方控件,DotNetBar -DataGrid 设置几个属性就是你想要的结果了 左边一个TreeView右边一个DGV拼凑起来, 应该可行,不过难度在于一要调整行高使之看起来象在同一行,二要实现同步展开和折叠(控制右边DGV的行Visible属性应该可以办到) private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) { Brush forcolor; if ((e.State & TreeNodeStates.Selected)>0) { e.Graphics.FillRectangle(new SolidBrush(SystemColors.Highlight), e.Bounds); forcolor = new SolidBrush(Color.White); } else { e.Graphics.FillRectangle(new SolidBrush(Color.White), e.Bounds); forcolor = new SolidBrush(Color.Black); } e.DrawDefault = true; e.Graphics.DrawString("WBS代码", this.Font, forcolor, new PointF(e.Bounds.X + 100, e.Bounds.Y)); e.Graphics.DrawString("WBS名称", this.Font, forcolor, new PointF(e.Bounds.X + 300, e.Bounds.Y)); }另设置:this.treeView1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll; thanks to h_w_king:方法不错,但是达不到需求 用Developer Express .NET 里面的控件应该很容易能达到这种效果吧 用dev express的Treelist控件,很容易实现 用第三方控件吧.CompenentOne里的flexGrid可以实现. 貌似第三方控件如DotNetBar等中的Tree可以实现这样的显示效果! 谁能给我个自动生成数学公式的小程序,谢谢,100分 谁给点软件开发思想! 如果程序运行时遇到错误,不想让退出系统重新启动运行,有没有什么方法可以调用,该方法的作用就是进行初始化 .net vs2005C#的登陆窗口问题? 为何在服务器上能够完成上传操作,到窗户端就不行了? 可否帮我看看这个多线程例子哪里有错? 什么是受控资源和非受控资源?(unmanaged resources) 北京C#程序员工资 救命啊!升级到了IE5.5,office出现50次限制,要我注册了。 C#打包问题 高手们 快来帮帮我
外表会不一样,写还是简单.
你的思路很好,能举个例子吗?
{
Brush forcolor;
if ((e.State & TreeNodeStates.Selected)>0)
{
e.Graphics.FillRectangle(new SolidBrush(SystemColors.Highlight), e.Bounds);
forcolor = new SolidBrush(Color.White);
}
else
{
e.Graphics.FillRectangle(new SolidBrush(Color.White), e.Bounds);
forcolor = new SolidBrush(Color.Black);
}
e.DrawDefault = true; e.Graphics.DrawString("WBS代码", this.Font, forcolor, new PointF(e.Bounds.X + 100, e.Bounds.Y));
e.Graphics.DrawString("WBS名称", this.Font, forcolor, new PointF(e.Bounds.X + 300, e.Bounds.Y));
}另设置:this.treeView1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
thanks to h_w_king:
方法不错,但是达不到需求
CompenentOne里的flexGrid可以实现.