转:实体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 ...
随机推荐
- PL/pgSQL函数带output参数例子
例子1,不带returns : [postgres@cnrd56 bin]$ ./psql psql () Type "help" for help. postgres=# CRE ...
- javascript删除数组里的对象
Array.prototype.del = function(value) { //删除数组中指定的元素,返回新数组 function hasValue(array, value) { for(var ...
- C#封装、多态、抽象、接口、匿名方法等学习
1:封装 将对象进行封装,并不等于将整个对象完全包裹起来,而是根据实际需要,设置一定的访问权限,用户根据不同的权限调用对象提供的功能,在C#语言中,可以使用修饰符public.internal.pro ...
- 微信公共服务平台开发(.Net 的实现)7-------发送图文消息
之前我们讲过让微信发送给我们普通的文本信息,下面我们来看看如何发送图文信息,需要注意的是这里说的是,让微信发给我们,而不是我们拍个图片发给微信处理,我们上传图片在以后的章节介绍.下面是发送图文消息的函 ...
- Google Map和桌面组件 Android开发教程
本文节选于机械工业出版社推出的<Android应用开发揭秘>一 书,作者为杨丰盛.本书内容全面,详细讲解了Android框架.Android组件.用户界面开发.游戏开发.数据存储.多媒体开 ...
- 源码级分析Android系统启动流程
首先看一下Android系统的体系结构,相信大家都不陌生 1.首先Bootloader引导程序启动完Linux内核后,会加载各种驱动和数据结构,当有了驱动以后,开始启动Android系统,同时会加载用 ...
- 《MySQL必知必会》读书笔记
一.了解MySQL 1.什么是数据库? 数据库是一种以某种有组织的方式存储的数据集合. 2.模式(schema):关于数据库和表的布局及特性的信息. 3. ...
- iOS开发——控制器OC篇&UINavigationController&UITabBarController详解
UINavigationController&UITabBarController详解 一:UINavigationController 控制器的属性: UINavigationControl ...
- KMP算法具体解释(转)
作者:July. 出处:http://blog.csdn.net/v_JULY_v/. 引记 此前一天,一位MS的朋友邀我一起去与他讨论高速排序,红黑树,字典树,B树.后缀树,包含KMP算法,只有在解 ...
- Xcode常见的编译、运行等错误的解决
Xcode常见的编译.运行等错误的解决 项目没找到Info.plist的错误 The solution for this particular instance of the error was “I ...