最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

visio二次開發(fā)--判斷文檔是否已發(fā)生變化(變化就加星號*)

 更新時間:2013年04月02日 17:02:08   作者:  
最近做一個故障樹診斷的項目,用visio二次開發(fā),可以同時打開多個繪制的故障樹圖形文檔。項目中需要實現(xiàn)判斷文檔是否發(fā)生變化,這是很多編輯軟件的基本功能,變化了就加個星號*

1.最近做一個故障樹診斷的項目,用visio二次開發(fā),可以同時打開多個繪制的故障樹圖形文檔。項目中需要實現(xiàn)判斷文檔是否發(fā)生變化,這是很多編輯軟件的基本功能,變化了就加個星號*。如果整個項目從0開始自己設(shè)計就是另外一回事了,這里是基于visio二次開發(fā),首先想到的是去看微軟的官方文檔,看是否有相關(guān)的API,或則是否改變會觸發(fā)某些事件,遺憾的是我沒找到。

2.不過visio畢竟是微軟的產(chǎn)品,做的就是好。它對程序運行動態(tài)中的很多過程進(jìn)行了定義和監(jiān)視,有一個對Scope的監(jiān)視,比如粘貼,復(fù)制,刪除,移動對象,形狀數(shù)據(jù)更改都對應(yīng)一個Scope對象,都有唯一的scopeId(Scope的具體定義就不細(xì)說了,具體看開發(fā)文檔)。值得一提的是,這里每個操作的對應(yīng)Scope的信息我不是從開發(fā)文檔看的,而是使用Visio里面提供的開發(fā)工具(需要在設(shè)置里面選擇該項功能才有)一個個操作觀察的,具體看圖

括號中的內(nèi)容就是對應(yīng)的Scope對象的信息。開頭的編號是對應(yīng)的唯一scopeID。每行信息都是一個事件,都可以在程序監(jiān)視和觸發(fā)。EnterScope和ExitScope之間為一個Scope對象。

所以監(jiān)視EnterScope事件,然后判斷當(dāng)前scopeID就可以知道進(jìn)行了什么操作,比如scopeID==1187,就是移動了對象。然后把移動對象,粘貼,刪除等等之類的都或上,這要是這些就可以判定文檔發(fā)生了改變。

我的項目中具體涉及代碼如下:

復(fù)制代碼 代碼如下:

private void VisApplication_EnterScope(Visio.Application app, int scopeID, String description)//故障樹文檔發(fā)生改變,要記錄,關(guān)閉時提示保存
        {
            axDrawingControl1.Document.Pages[1].CellChanged -= new EPage_CellChangedEventHandler(Form_paint_CellChanged);//文檔發(fā)生更改事件
            axDrawingControl1.Document.Pages[1].CellChanged += new EPage_CellChangedEventHandler(Form_paint_CellChanged);//文檔發(fā)生更改事件
            //   Console.WriteLine("$currentScope.tostring$" + app.CurrentScope.ToString()+ "$ID$" + scopeID.ToString() + "$Des$" + description);
            /*
             1188$ID$1188$Des$設(shè)置對象大小;0
            delete=1486,//刪除對象
            dragInto=1246,//拖入圖形
            moveShape = 1187,//移動對象
            shapeData=1312,//形狀數(shù)據(jù)
            changePageSize=1239,//更改頁面大小
            changeShapeSize = 1189,//設(shè)置對象大小
            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的具體定義開發(fā)文檔中很詳細(xì),如果有耐心你也可以一個個試,在開發(fā)者工具-事件監(jiān)視器里觀察。
4.至于前兩句EPage_CellChangedEventHandler,這是我的程序中為了動態(tài)判斷形狀數(shù)據(jù)是否合法,實事監(jiān)控形狀數(shù)據(jù)對應(yīng)的Cel發(fā)生變化的事件進(jìn)行判斷。為什么先刪除事件代理再添加?是為了解決程序里的另一個問題,這里不細(xì)說。

程序中的效果如下:

 

相關(guān)文章

  • C#判斷一天、一年已經(jīng)過了百分之多少的方法

    C#判斷一天、一年已經(jīng)過了百分之多少的方法

    這篇文章主要介紹了C#判斷一天、一年已經(jīng)過了百分之多少的方法,涉及C#針對時間及日期的運算與判定技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C#詞法分析器之輸入緩沖和代碼定位的應(yīng)用分析

    C#詞法分析器之輸入緩沖和代碼定位的應(yīng)用分析

    本篇文章介紹了,C#詞法分析器之輸入緩沖和代碼定位的應(yīng)用分析。需要的朋友參考下
    2013-05-05
  • C#開發(fā)Windows UWP系列之3D變換

    C#開發(fā)Windows UWP系列之3D變換

    這篇文章介紹了C#開發(fā)Windows UWP系列之3D變換,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#時間戳基本用法實例分析

    C#時間戳基本用法實例分析

    這篇文章主要介紹了C#時間戳基本用法,較為詳細(xì)的講述了時間戳的概念、生成方法與轉(zhuǎn)換技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C#操作IIS方法集合

    C#操作IIS方法集合

    這篇文章主要介紹了C#操作IIS方法集合的相關(guān)資料,需要的朋友可以參考下
    2015-09-09
  • C#求點集的最小包圍矩形

    C#求點集的最小包圍矩形

    這篇文章主要為大家詳細(xì)介紹了C#求點集的最小包圍矩形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C#設(shè)置頁面單位和縮放的方法

    C#設(shè)置頁面單位和縮放的方法

    這篇文章主要介紹了C#設(shè)置頁面單位和縮放的方法,涉及C#設(shè)置頁面屬性的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C# 基于NPOI操作Excel

    C# 基于NPOI操作Excel

    最近遇到一個數(shù)據(jù)導(dǎo)入的需求,語言是.net framework 4.7的C#。但是,這次主要探討NPOI的體驗,原則就是向前兼容。所以采用.xls的支持。下面就來看看實現(xiàn)步驟
    2021-06-06
  • 使用C#實現(xiàn)簡單的線性回歸的代碼詳解

    使用C#實現(xiàn)簡單的線性回歸的代碼詳解

    最近注意到了NumSharp,想學(xué)習(xí)一下,最好的學(xué)習(xí)方式就是去實踐,因此從github上找了一個用python實現(xiàn)的簡單線性回歸代碼,然后基于NumSharp用C#進(jìn)行了改寫,需要的朋友可以參考下
    2024-01-01
  • 基于C#的電視臺節(jié)目表接口調(diào)用代碼

    基于C#的電視臺節(jié)目表接口調(diào)用代碼

    這篇文章主要介紹了基于C#的電視臺節(jié)目表接口調(diào)用代碼的相關(guān)資料,需要的朋友可以參考下
    2016-06-06

最新評論

溧阳市| 通州市| 临漳县| 贵州省| 屏东县| 丰都县| 龙口市| 张家港市| 宁乡县| 台山市| 巴里| 崇仁县| 开封县| 青浦区| 库尔勒市| 通化市| 曲靖市| 余江县| 罗平县| 沧源| 中西区| 车致| 英德市| 鹤庆县| 南安市| 定安县| 陆川县| 新野县| 上思县| 平舆县| 息烽县| 沁水县| 武夷山市| 长沙市| 逊克县| 新源县| 巴马| 额济纳旗| 澜沧| 德江县| 象山县|