我想实现如下样式的DataGridView??
在c# winform 模式下,我想实现如下样式的DataGridView,在"结点类型"的列中插入类似treeView 样式的列值?如下图:
--------------------编程问答-------------------- 不要下沉 --------------------编程问答-------------------- 在线等...... --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 帮顶~~ --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 用代码在容器控件里放个树控件也能达到这种效果,不过比较复杂 --------------------编程问答-------------------- 直接用TreeView做不行吗?无非是横行上多些内容. --------------------编程问答--------------------
能举个例子吗? --------------------编程问答-------------------- 不一定要在DataGridView下实现这种效果,比如有和这个类似的控件也行
请各位大侠指点,在线等...谢谢!
--------------------编程问答-------------------- treeview控件不就可以吗 --------------------编程问答--------------------
thanks to zhangyu_xl:
请问怎么实现,“wbs代码”和“wbs名称”两列的值怎么办,treeview 只是在单列中? --------------------编程问答-------------------- treeview可以实现左边的树形节点 --------------------编程问答-------------------- 用TreeView 加一个ListView Detail模式,两个的onselectitemchanged 处理一下就行了。 --------------------编程问答-------------------- TreeView --------------------编程问答--------------------
写个自定义控件,由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可以实现这样的显示效果! --------------------编程问答-------------------- 后台绑定可以实现,不过比较复杂
补充:.NET技术 , C#