我不知道这种 UI 样式的正确名称是什么。在 MS Access 中,“关系”工具将 db 表显示为可以与线条链接的小可移动框。Visio 和一些音频应用程序也是如此 - 可移动的框,包含可以以有意义的方式连接在一起的文本行。
如何使用 Visual Studio 2008 和 C# 在 .NET 中创建类似的东西?我以前从未创建过自己的控件。
这是我的意思的那种东西的图像:点击例如
我不知道这种 UI 样式的正确名称是什么。在 MS Access 中,“关系”工具将 db 表显示为可以与线条链接的小可移动框。Visio 和一些音频应用程序也是如此 - 可移动的框,包含可以以有意义的方式连接在一起的文本行。
如何使用 Visual Studio 2008 和 C# 在 .NET 中创建类似的东西?我以前从未创建过自己的控件。
这是我的意思的那种东西的图像:点击例如
您将需要两个主要的自定义控件:主视图和表格控件。
表格控件负责绘制其所有列并确保项目可以在需要时滚动。它还负责为指定的行标题提供 x/y 坐标。这样关系线可以匹配到正确的行。
主视图负责接受表格对象列表(存储在自定义表格对象中),创建相同数量的表格控件并按指定顺序排列它们。它还负责在表格控件之间绘制线条。
总而言之,这不是微不足道的。您需要覆盖这两个控件的 OnPaint() 方法来完成所有这些自定义绘图。对 GDI+ 图形例程进行一些研究,找出可以使用哪些方法来绘制它。您可能最常使用这些对象/方法:
Pen
SolidBrush
LinearGradientBrush
DrawRectangle()
FillRectangle()
DrawString()
DrawImage()
DrawLine()
DrawPath()
您还需要捕获各种鼠标事件以启用控件的移动。这可以通过重写方法来完成,例如OnMouseDown
或OnMouseMove
。
祝你好运。
您尝试绘制的图表是 ERD 或数据库设计。您可能还在寻找的是类图。
您正在尝试做的事情非常复杂。
以下是一些可能有帮助的链接。这些都是做图表的开源类型 UML 工具。
http://imar.spaanjaars.com/501/automatically-generating-class-diagrams-from-a-type-using-reflection
http://sourceforge.net/projects/use-case-maker/