visio二次开发---判别文档能否已改变(改变了就加个星号*)

1.比来做一个毛病树确诊的项目,用visio二次开发,可以一同翻开多个制造的毛病树图形文档。项目中需要完结区分文档能否发生改变,这是许多修正软件的根本功用,改变了就加个星号*。如果整个项目从0初步自己描写就是另外一回事了,这里是依据visio二次开发,首要想到的是去看微软的官方文档,看能否有相关的API,或则能否改动会触发某些工作,怅惘的是我没找到。 2.不过visio毕竟是微软的产品,做的就是好 http://www.superkp111.com 。它对程序工作动态中的许多进程进行了定义和监督,有一个对Scope的监督,比如粘贴,拷贝,删去,移动方针,形状数据更改都对应一个Scope方针,都有仅有的scopeId(Scope的详细定义就不细说了,详细看开发文档)。值得一提的是,这里每个操作的对应Scope的信息我不是从开发文档看的,而是运用Visio里面供应的开发东西(需要在设置里面选择该项功用才有)一个个操作调查的,详细看图 括号中的内容就是对应的Scope方针的信息。开始的编号是对应的仅有scopeID。每行信息都是一个工作,都可以在程序监督和触发。EnterScope和ExitScope之间为一个Scope方针。 所以监督EnterScope工作,然后区分其时scopeID就可以知道进行了啥操作,比如scopeID==1187,就是移动了方针。然后把移动方针,粘贴,删去等等之类的都或上,这要是这些就可以判定文档发生了改动。 我的项目中详细触及代码如下: private void VisApplication_EnterScope(Visio.Application app, int scopeID, String description)//毛病树文档发生改动,要记载,关闭时提示保管
        {
            axDrawingControl1.Document.Pages[1].CellChanged -= new EPage_CellChangedEventHandler(Form_paint_CellChanged);//文档发生更改工作
            axDrawingControl1.Document.Pages[1].CellChanged  = new EPage_CellChangedEventHandler(Form_paint_CellChanged);//文档发生更改工作
            //   Console.WriteLine("$currentScope.tostring$"   app.CurrentScope.ToString()  "$ID$"   scopeID.ToString()   "$Des$"   description);
            /* 
             1188$ID$1188$Des$设置方针大小;0
            delete=1486,//删去方针
            dragInto=1246,//拖入图形
            moveShape = 1187,//移动方针
            shapeData=1312,//形状数据
            changePageSize=1239,//更改页面大小
            changeShapeSize = 1189,//设置方针大小
            paste = 1022 //粘贴
            paste2 = 1158 //粘贴
            1501//刺进注释
            */
            if (scopeID == 1486 || scopeID == 1246 || scopeID == 1187 || scopeID == 1312 || scopeID == 1239 || scopeID == 1189 || scopeID == 1022 || scopeID == 1158 || scopeID == 1188 || scopeID == 1501)
            {
                needSave = true;//改变了,需要保管到临时文件夹

                string temp = TabControl.SelectedTab.Text;
                if (temp[temp.Length - 5] != '*')
                {
                    TabControl.SelectedTab.Text = temp.TrimEnd()   " *    ";
                }
            }
        } 3.Scope的详细定义开发文档中很详细,如果有耐性你也可以一个个试,在开发者东西-工作监督器里调查。 4.至于前两句EPage_CellChangedEventHandler,这是我的程序中为了动态区分形状数据能否合法,实事监控形状数据对应的Cel发生改变的工作进行区分。为啥先删去工作署理再添加?是为了处置程序里的另一个疑问,这里不细说。 程序中的效果如下: http://www.haokk123.info 
posted @ 2013-04-01 05:36  chinadiy197601  阅读(375)  评论(0编辑  收藏  举报