转:实体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 ...
随机推荐
- memcached Logging
For reasons now relegated to history, Spy has its own logging implementation. However, it is compati ...
- 通俗理解C#委托和事件
引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...
- Flex Builder 开发语言切换问题
1.Flex Builder 4.6切换语言 打开\Adobe\Adobe Flash Builder 4.6\FlashBuilder.ini -nlzh_CN-startupeclipse/plu ...
- shared_ptr注意事项
对shared_ptr的Copy构造和Copy赋值,会改变引用计数,但是对shared_ptr中原始资源的Copy构造和Copy赋值,不会改变引用计数.因此存在下面的危险情况: 1.获取资源时,初始化 ...
- Linux的内存回收和交换
Linux的内存回收和交换 版权声明: 本文章内容在非商业使用前提下可无需授权任意转载.发布. 转载.发布请务必注明作者和其微博.微信公众号地址,以便读者询问问题和甄误反馈,共同进步. 微博ID:or ...
- mfc extention dll 與 normal dll 的區別
extention dll 1.指從MFC中繼承過來的DLL,一般要求使用共享MFC DLL進行連接,也要求調用者也使用MFC且使用共享MFC,如此可保證DLL與調用者有相同的MFC庫. 2.在使用資 ...
- Docker学习笔记2
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- GCC 编译选项(转)
转:http://www.cnblogs.com/xmphoenix/archive/2011/03/21/1989944.html gcc提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常 ...
- kafka 简介
1. 概述 Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数据,使用scala编写.活跃的流式数据在web网站应用中非常常见,这些数据包括网站的pv.用户访 ...
- memcachedb-持久化存储的缓存系统
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度.Memcached ...