首先要说明,实现方式不是我的原创,其中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的更多相关文章

  1. [WPF]TextTrimming截断后,ToolTip显示完整信息

    文本过长被截断后,用ToolTip显示完整信息. 文本未被截断,则不显示ToolTip. 值转换器: public class TrimmedTextBlockVisibilityConverter ...

  2. echarts之字符云tooltip显示混乱问题的解决办法

    echarts字符云中tooltip显示混乱主要表现为一下两点: 1.字体与其显示框内容不对应鼠标识别错误 解决思路: 就是option里的数据要对value降序排序(这一点很关键,是必须的一步) 把 ...

  3. ECharts图表tooltip显示时超出canvas图层解决方法

    我们在做ECharts图表的时候可能会遇到tooltip显示时超出了canvas图层范围,并且被其它z-index较高的div容器遮盖,这是悬浮展示信息就看不全,我们根据官网文档的配置项查询发现con ...

  4. Echarts 的悬浮框tooltip显示自定义格式化

    最近做的项目用到echarts雷达图,但是由于地市过多,遇到悬浮框显示问题被遮住 如图: 可以看到上面从兴安开始数据就被遮住了 为了解决这个被遮住的悬浮框,达到tooltip自定义格式 完成后的效果如 ...

  5. 使用tooltip显示jquery.validate.unobtrusive验证信息

    通过重写CSS实现使用tooltip显示jquery.validate.unobtrusive验证信息,效果如图: 1. 在ViewModel中定义验证规则 [Display(Name = " ...

  6. 用WPF实现在ListView中的鼠标悬停Tooltip显示

    原文:用WPF实现在ListView中的鼠标悬停Tooltip显示 一.具体需求描述 在WPF下实现,当鼠标悬停在ListView中的某一元素的时候能弹出一个ToolTip以显示需要的信息. 二.代码 ...

  7. bootstrap tooltip 显示提示信息

    参照网上文档,是这样说的, <a data-toggle="tooltip" data-placement="top" title="这是要提示 ...

  8. Swing图层的应用——实现tooltip显示

    没有错是世纪前的swing. 在使用Swing的时候有个问题一直没有解决,就是Swing自带的tooltip不会跟随鼠标进行移动,而且移动到边界就会遮挡的问题.JCompoent有个createToo ...

  9. echarts2.0tooltip边框限制导致tooltip显示不全解决办法

    1.显示常数位置x和y; 2.根据鼠标移动显示:tooltip : { trigger: 'axis', position:function(p){ //其中p为当前鼠标的位置 return [p[0 ...

随机推荐

  1. CSS3+Js制作的一款响应式导航条

    今天制作了一个响应式导航条,能够自动随着不同的屏幕分辨率或浏览器窗口大小的不同而改变导航条的样式,这里主要用到的就是CSS3的Media Query.具体可以查看浅谈响应式布局这篇文章,这里就不花费大 ...

  2. Codeforces Round #339 (Div. 2) B. Gena's Code 水题

    B. Gena's Code 题目连接: http://www.codeforces.com/contest/614/problem/B Description It's the year 4527 ...

  3. Microsoft Visual C++ Runtime Library Runtime Error的解决的方法

    打开浏览器时,出现Microsoft Visual C++ Runtime Library Runtime Error错误,初步预计是软件冲突,可能有多种出错的方式,我的是浏览器自己主动关闭. 一. ...

  4. zookeeper集群安装配置

    http://www.firefoxbug.net/?p=2565

  5. cocos2d-html5的jsb模式下如何在编译时自动将js编译为jsc

    cocos2d-html5是一个用JS来开发游戏的框架,通过javascript Binding的方式可以将游戏编译到手机上.这对前端开发人员来说非常方便,开发效率也比使用c++开发要快的多. jsb ...

  6. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 7.全局防护盲点的总结上篇

    0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启,然后使用addlashes函数对单引号等特殊字符进行转义.但仅仅使用这样的防护是存在很多盲点的,比如最经典的整型参数传递, ...

  7. easyui datagrid 列拖拽

    首先easyui 它有提供了拖拽的功能Draggable,那我们就可以想 拖拽标题头到另外的标题头上面我们就对datagrid的columns重新绑定一次 并刷新datagrid这个功能不就行了? & ...

  8. Dividing 多重背包 倍增DP

    Dividing 给出n个物品的价值和数量,问是否能够平分.

  9. linux环境中 对tomcat配置java环境

    JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m -XX:MaxPermSize=512m" JAVA_HOME="/weblogic1 ...

  10. [SQLServer]学习总结笔记(基本涵盖Sql的所有操作)

    --################################################################################### /* 缩写: DDL(Dat ...