您好 我是C#WPF的新手。 在C#中有一个WPF程序流程图。 程序可以显示对象并在它们之间连接箭头。 即例如
======== ========
| | | |
| obj1 | ------> | obj2 |
======== ========
1 - 如何在右键单击时为每个对象添加可视化功能? 即当我右键单击一个对象时,我希望能够更改属于应用程序的属性。
2 - 如何创建和生成包含上述对象关系信息的文件。即obj1流向obj2
感谢您分享您的想法
答案 0 :(得分:3)
1)您需要编写要在鼠标单击事件中使用的命中测试代码。您需要检查每个对象的屏幕位置,以确定在单击鼠标时哪个(如果有)对象位于指针“下方”。从那里,您可以显示要实现的功能的相应上下文菜单。
2)如果您只是想稍后保存应用程序重新打开的信息,那么简单的序列化到XML或二进制文件就可以了。如果目的是制作用户可读的内容,则需要编写一个简单的csv导出,或者输出需要更复杂的自定义序列化器。
更多信息:
命中测试是评估单击对象的一般术语,例如,当您单击DataGridView时,命中测试逻辑可以告诉您单击了哪个单元格/行/列。许多Widget类(包括DataGridView)都有一个HitTest方法,该方法将返回一个提供此信息的对象。如果流程图工具对连接的对象使用自定义绘图,则必须使用单击坐标来确定流程图中的哪个元素已被单击。
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.hittest.aspx记录了DataGridView的HitTest方法。
http://www.codeproject.com/KB/list/CSharpHitTest.aspx是CodeProject上的示例程序,它在ListView中命中测试逻辑。
答案 1 :(得分:2)
1 - 处理对象的鼠标单击事件,并执行您必须执行的操作。 2 - 将对象图序列化为XML或二进制格式。
答案 2 :(得分:1)
我不确定您的应用程序是如何工作的以及您使用了哪些控件,但我建议您查看以下文章,使用您提到的功能实现设计 -
答案 3 :(得分:0)
来自Git https://gridwizard.wordpress.com/2015/03/25/simple-c-library-to-render-graph-to-flowchart
的简单库它首先计算Node.x / y和Canvas大小(给定对象图),然后渲染为HTML5,从而帮助生成流程图。您可以将代码渲染调整为WPF(只需添加另一个渲染 - 从HTML5渲染器借用代码)。