请问如何在两个树控件之间画线(C#/Winforms)

hongn 2009-03-27 10:44:40
我在做一个项目(送用Winforms做的),其中一个窗体上放了一个Panel,Panel上放了两个Treeview控件,把左边的Treeview的节点可以拖到右边的节点下,然后然后这两个节点可以用线连起来.高手请帮帮忙啊,先谢谢啦!!!!!!我在Goole上也搜索了,但没有什么帮助,如果可以的话,还希望高手老大能给段代码,敝人好学习学习,谢谢
...全文
331 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ladder2008 2009-11-06
  • 打赏
  • 举报
回复
我也遇到同样的问题 谢谢
hongn 2009-03-31
  • 打赏
  • 举报
回复
我的问题已经解决了,谢谢大家的帮助,呵呵,结贴给分啦
hongn 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yinxiaowei823 的回复:]
引用 3 楼 hongn 的回复:
首先谢谢2楼和3楼的关注,呵呵。
我是用Graphice.DrawLine画线的,但是只能在panel上显示线条,Treeview上不能画上线,大家能再帮帮忙吗?
谢谢啦!

还是我说的 Graphics对象问题 你可以在2个treeview上放一个picture 取picture的Graphics 画
[/Quote]

谢谢 yinxiaowei823 鸟哥 的回答,能否再说详细点呢?呵呵,我还不太会,能给段代码看看吗?麻烦你了。。。
yinxiaowei823 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hongn 的回复:]
首先谢谢2楼和3楼的关注,呵呵。
我是用Graphice.DrawLine画线的,但是只能在panel上显示线条,Treeview上不能画上线,大家能再帮帮忙吗?
谢谢啦!
[/Quote]
还是我说的 Graphics对象问题 你可以在2个treeview上放一个picture 取picture的Graphics 画
unforgivabale 2009-03-27
  • 打赏
  • 举报
回复
向高手学习,想高手致敬!
hongn 2009-03-27
  • 打赏
  • 举报
回复
不好意思,刚刚看错了,应该送1楼和2楼,呵呵
yinxiaowei823 2009-03-27
  • 打赏
  • 举报
回复
我也来说几句
1,你说的2个treeview的拖放问题
应该不是很困难,你可以参考一下下面是MSDN上的
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.dragdrop(VS.80).aspx
2,划线的问题,你可以看看2楼朋友说的,说个注意点
画线的时候注意你取得的Graphics的对象。
hongn 2009-03-27
  • 打赏
  • 举报
回复
首先谢谢2楼和3楼的关注,呵呵。
我是用Graphice.DrawLine画线的,但是只能在panel上显示线条,Treeview上不能画上线,大家能再帮帮忙吗?
谢谢啦!
ljhcy99 2009-03-27
  • 打赏
  • 举报
回复
你的问题 看来需要动态的 画线了 ,可以考虑GDI.

要是普通的做一个 线 的效果,可以把panle放上去,调整宽度


zzyhuian06142 2009-03-27
  • 打赏
  • 举报
回复
Graphice.DrawLine 来画线看看
有代码再贴上来,呵呵
yinxiaowei823 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hongn 的回复:]
鸟哥,谢谢你的热情回复,我先试试看啊,呵呵
不过Treeview里面不是不可画线的吗?还好画Node的延长线啊?
[/Quote]

Treeview里面当然可以划线的,只要创建的Graphics 是treeview就行了
hongn 2009-03-27
  • 打赏
  • 举报
回复
鸟哥,谢谢你的热情回复,我先试试看啊,呵呵
不过Treeview里面不是不可画线的吗?还好画Node的延长线啊?
yinxiaowei823 2009-03-27
  • 打赏
  • 举报
回复
不好意思,我自己弄错了

我本来以为吧picture弄成透明就可以 但是透明的话也会出现你说的问题

因为上班的原因,给你个解决办法把,分3段来画,就是分别在treeview1和treeview2里面画Node的延长线,在panel里面画链接线
简单举个例子吧,
1,定义画笔和颜色
Pen blackPen = new Pen(Color.Black, 5);
blackPen.DashStyle = DashStyle.Dash;

2,treeview1延长线
using (Graphics g = treeview1.CreateGraphics())
{
g.DrawLine(blackPen, x, y, x1, y1);
}

3,treeview2延长线
using (Graphics g = treeview2.CreateGraphics())
{
g.DrawLine(blackPen, x, y, x1, y1);
}

4,panel链接线
using (Graphics g = panel.CreateGraphics())
{
g.DrawLine(blackPen, x, y, x1, y1);
}

不知道能不能帮你 哈哈

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧