转:实体ToolTip显示XData
首先要说明,实现方式不是我的原创,其中ToolTip的实现转自这里,然后XData的设置和获取来自Kean的博客,当然我自己也做了点研究,在这里,然后把这两个技术结合起来就是你将要看到的东西。
先上效果吧。

下面是实现的代码:
|
public class Class1:IExtensionApplication { void IExtensionApplication.Initialize() { Mytooltip(); } void IExtensionApplication.Terminate() { } public void Mytooltip() { Document doc =Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; ed.PointMonitor += newPointMonitorEventHandler(MytooltipOn); } private void MytooltipOn(object sender,PointMonitorEventArgs e) { Database db =Application.DocumentManager.MdiActiveDocument.Database; FullSubentityPath[] ePaths = e.Context.GetPickedEntities(); if (ePaths.Length > 0) { FullSubentityPath ePath = ePaths[0]; using (Transaction trans = db.TransactionManager.StartTransaction()) { ObjectId entId = ePath.GetObjectIds()[0]; Entity ent = (Entity)trans.GetObject(entId,OpenMode.ForRead); e.AppendToolTipText(GetXData(ent)); trans.Commit(); } } else { e.AppendToolTipText("\n未指向实体"); } } static public string GetXData(Entity ent) { string ret = ""; Document doc =Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; ResultBuffer rb = ent.XData; if (rb == null) return "该实体不包含XData."; else { int n = 0; foreach (TypedValue tv in rb) { ret += string.Format("类型值{0} - 类型: {1},值: {2}\n", n, tv.TypeCode, tv.Value); n++; } rb.Dispose(); return ret; } } [CommandMethod("SetXD")] static public void SetXData() { Document doc =Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; PromptEntityOptions peo = newPromptEntityOptions("\n请选择实体:"); PromptEntityResult per = ed.GetEntity(peo); if (per.Status == PromptStatus.OK) { Transaction trans = doc.TransactionManager.StartTransaction(); DBObject obj = trans.GetObject(per.ObjectId,OpenMode.ForWrite); AddRegAppTableRecord("Test"); ResultBuffer rb = new ResultBuffer(); rb.Add(new TypedValue(1001, "Test")); rb.Add(new TypedValue(1000, "Greeting! I am the XData")); rb.Add(new TypedValue(1000, "Today is very Cold")); obj.XData = rb; rb.Dispose(); trans.Commit(); trans.Dispose(); } } static void AddRegAppTableRecord(string regAppName) { Document doc =Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; Database db = doc.Database; Transaction trans = doc.TransactionManager.StartTransaction(); RegAppTable rat = (RegAppTable)trans.GetObject(db.RegAppTableId,OpenMode.ForRead, false); if (!rat.Has(regAppName)) { rat.UpgradeOpen(); RegAppTableRecord ratr = newRegAppTableRecord(); ratr.Name = regAppName; rat.Add(ratr); trans.AddNewlyCreatedDBObject(ratr, true); } trans.Commit(); trans.Dispose(); } } |
命令SetXD用于设置XData,不然新建的实体是不包含XData的。指向一个实体后,将会自动显示该实体的XData
原文地址:http://blog.csdn.net/gisoracle/article/details/7276782
转:实体ToolTip显示XData的更多相关文章
- [WPF]TextTrimming截断后,ToolTip显示完整信息
文本过长被截断后,用ToolTip显示完整信息. 文本未被截断,则不显示ToolTip. 值转换器: public class TrimmedTextBlockVisibilityConverter ...
- echarts之字符云tooltip显示混乱问题的解决办法
echarts字符云中tooltip显示混乱主要表现为一下两点: 1.字体与其显示框内容不对应鼠标识别错误 解决思路: 就是option里的数据要对value降序排序(这一点很关键,是必须的一步) 把 ...
- ECharts图表tooltip显示时超出canvas图层解决方法
我们在做ECharts图表的时候可能会遇到tooltip显示时超出了canvas图层范围,并且被其它z-index较高的div容器遮盖,这是悬浮展示信息就看不全,我们根据官网文档的配置项查询发现con ...
- Echarts 的悬浮框tooltip显示自定义格式化
最近做的项目用到echarts雷达图,但是由于地市过多,遇到悬浮框显示问题被遮住 如图: 可以看到上面从兴安开始数据就被遮住了 为了解决这个被遮住的悬浮框,达到tooltip自定义格式 完成后的效果如 ...
- 使用tooltip显示jquery.validate.unobtrusive验证信息
通过重写CSS实现使用tooltip显示jquery.validate.unobtrusive验证信息,效果如图: 1. 在ViewModel中定义验证规则 [Display(Name = " ...
- 用WPF实现在ListView中的鼠标悬停Tooltip显示
原文:用WPF实现在ListView中的鼠标悬停Tooltip显示 一.具体需求描述 在WPF下实现,当鼠标悬停在ListView中的某一元素的时候能弹出一个ToolTip以显示需要的信息. 二.代码 ...
- bootstrap tooltip 显示提示信息
参照网上文档,是这样说的, <a data-toggle="tooltip" data-placement="top" title="这是要提示 ...
- Swing图层的应用——实现tooltip显示
没有错是世纪前的swing. 在使用Swing的时候有个问题一直没有解决,就是Swing自带的tooltip不会跟随鼠标进行移动,而且移动到边界就会遮挡的问题.JCompoent有个createToo ...
- echarts2.0tooltip边框限制导致tooltip显示不全解决办法
1.显示常数位置x和y; 2.根据鼠标移动显示:tooltip : { trigger: 'axis', position:function(p){ //其中p为当前鼠标的位置 return [p[0 ...
随机推荐
- FLEX4中的Panel如何实现带自定义图标和按钮
做过flex开发的程序员都知道,使用flex3中的panel自定义按钮很容易,而且flex3的panel有icon属性.但是flex4的中大部分的控件与flex3中的控件实现方式有很大的变化,同是 ...
- ThinkSNS插件的使用方法
1.插件包放到/addons/plugin/ 目录下. 2.自定义一个插件钩子:修改/apps/public/Tpl/default/Index/index.html,约在65行左右,添加下面钩子.{ ...
- 深入理解JavaScript-replace
replace方法是属于String对象的,可用于替换字符串. 简单介绍: StringObject.replace(searchValue,replaceValue) StringObject:字符 ...
- inline-block 前世今生
曾几何时,display:inline-block 已经深入「大街小巷」,随处可见 「display:inline-block; *display:inline; *zoom:1; 」这样的代码.如今 ...
- 使用Machin公式计算
使用Machin公式计算,并使用百亿进制+末项位数控制,这里可算出数万位(比最简PI快80倍),源代码约40行,在本网页中. 计算公式 PI=16arctg(1/5)-4arctg(1/239),其中 ...
- IE10、IE11出现“__doPostBack未定义”的解决办法。
方法一:浏览器设置成兼容模式,这个是超级掩耳盗铃方法,你就没想过其他人也会出这个问题. 方法二.安装服务器版的.Net40的补丁.http://download.csdn.net/detail/565 ...
- volatile synschonized的区别
在一次面试中,被问到volatile与synschonized的区别,概念模模糊糊,今天做一个总结,加强自己的认识. 本文参考http://www.cnblogs.com/dolphin0520/p/ ...
- DB2 重新设定表自增字段的当前值
转自:http://blog.csdn.net/jionghan3855/article/details/2709073 1.ALTER TABLE UKEY_INFO_TAB ALTER COLUM ...
- 关于Android中获取Intent里的数据
Intent获取数据和发送数据的办法: //直接通过Intent发送 intent.putExtra("name","wytings"); //直接通过Inte ...
- C++字符串处理封装类String
概述 C++在处理字符串时相对于python等脚本语言并没有什么优势,下面将常用的字符串处理函数封装成一个String工具类,方便以后使用,后期还会对该类进行扩充,下面是具体的实现: // Strin ...